1、this指向问题,指向的是当前的方法属于谁,当前的方法属于谁就指向谁!!

例子:

oDiv.onclick = function () {

this指向的是oDiv,因为这个方法属于oDiv

}

var obj = new Object();  //构造对象

obj.show=function(){

    this====>>这时候的函数属于obj,所以this指向的是obj这个对象

}

Tab.prototype.show=function(){

     alert(this)这时候this指向的是后面new Tab函数的实例对象

}

被定时器调用的this都是指向window,事件的话指向事件====》》这时候使用_this来修改指向问题

2、函数的形式

函数:

方法:

事件处理函数:

构造函数==》函数用来构造对象叫什么构造函数!!!(首字母大写)

3、构造函数

用工厂方式构造对象

工厂方式的问题:

1、没有new

2、每个对象都有一套自己的函数---浪费资源

this:当前的方法属于谁就指谁

函数前面有new的时候,会创建一个新的object,这时候this指向的是这个object

全局函数,this指向的是window,new show()指向是object(使用new函数时系统会在函数内部创建一个对象)!!

4、原型prototype

类比:

prototype  ====》》class  改变一类元素的样式

给一个对象加方法  ===》》行间样式  改变一个元素的样式

var arr1 = new Array(12, 5, 8, 4);

var arr2=new Array(44, 6,5,4);

Array.prototype.sum=function(){}  这样arr1跟arr2都有sum这个方法

arr1.prototype.sum=function(){}  这样只有arr1有sum这个方法,arr2没有

类                    模子

对象(实例)     蛋糕

var arr=new Array();

Array类  不具备实际的功能,只能用来构造对象

arr对象  真正有功能的东西,被类给构造出来的东西

类就是构造函数 Array是类,arr是构造函数

prototype就是在原类的基础上进行方法扩展,用元素来给构造函数增加方法!

总结

对象的组成  方法(函数) 属性(变量)

用构造函数来增加属性,每个对象的属性各不相同!!!

对象组成和继承对象:

1、属性

2、方法

继承:

1、先执行父级的构造函数,然后再添加子类的属性!!

注意!!当直接使用  Worker.prototype=Person.prototype;的方法来继承父级的方法时,子级跟父级指向同一个空间,因此修改子级的同时会修改父级,需要做如下修改!!

for( var i in Person.prototype)

{

    Worker.prototype[i]=Person.prototype[i];

}

常见面试题误区

引用

//指向同一个指针
var arr1=[、、];
var arr2=arr1;
arr2.push("");
alert(arr1)====>>1.2.3.4
//解析这时候arr2引用arr1,那么此时,arr2跟arr1是指向同一指针空间,所以其中一个改变,都会跟着发生改变 //指向不同指针
var arr1=[、、];
var arr2=[];
for(var i in arr1){
arr2[i]=arr1[i]; //循环赋值
} arr2.push(""); alert(arr1) ====>>、、

javascript面向对象学习的更多相关文章

  1. JavaScript面向对象学习笔记

    JavaScript 常被描述为一种基于原型的语言 (prototype-based language)--每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象也可能拥有原型, ...

  2. javascript面向对象学习(一)

    面向对向的初体验 创建一个标签 // 传统 var p = document.createElement('p'); var txt = document.createTextNode('我是传统js ...

  3. javascript 面向对象学习(一)——构造函数

    最近在学习设计模式,找了很多资料也没有看懂,看到怀疑智商,怀疑人生,思来想去还是把锅甩到基础不够扎实上.虽然原型继承.闭包.构造函数也都有学习过,但理解得不够透彻,影响到后续提高.这次重新开始学习,一 ...

  4. javascript 面向对象学习(三)——this,bind、apply 和 call

    this 是 js 里绕不开的话题,也是非常容易混淆的概念,今天试着把它理一理. this 在非严格模式下,总是指向一个对象,在严格模式下可以是任意值,本文仅考虑非严格模式.记住它总是指向一个对象对于 ...

  5. javascript 面向对象学习(二)——原型与继承

    什么是原型? 首先我们创建一个简单的空对象,再把它打印出来 var example = {} console.log(example) 结果如下: { __proto__: { constructor ...

  6. javascript面向对象学习笔记——创建对象(转)

    工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o ...

  7. JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)

    一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可 ...

  8. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  9. JavaScript学习总结(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

随机推荐

  1. composer 更换国内镜像源

    使用 Composer 镜像加速有两种选项: 选项一:全局配置,这样所有项目都能惠及(推荐):选项二:单独项目配置: 选项一.全局配置(推荐) $ composer config -g repo.pa ...

  2. HTML5 离线缓存Appcache

    创建一个和html同名的manifest文件,比如页面为index.html,那么可以建一个index.manifest的文件,然后给index.html的html标签添加如下属性即可: <ht ...

  3. js中html拼接

    https://i.cnblogs.com/EditPosts.aspx?postid=10620765&update=1

  4. 【1】【leetcode-93】复原IP地址

    (不会,典型) 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135 ...

  5. Hive基础概念、安装部署与基本使用

    1. Hive简介 1.1 什么是Hive Hives是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.2 为什么使用Hive ① 直接使用 ...

  6. javascript在计算浮点数(小数)不准确,解决方案

    方案来自网络,实现简单,便于做加减乘除使用,由于项目临时要用记录下 如需要更加复杂的计算类库,可以考虑 math.js等知名类库 /** * floatTool 包含加减乘除四个方法,能确保浮点数运算 ...

  7. [Android] Android 使用Greendao gradle 出现 Error:Unable to find method 'org.gradle.api.tasks.TaskInputs.file(Ljava/lang/Object;)

    Android 使用Greendao gradle 出现 Error:Unable to find method 'org.gradle.api.tasks.TaskInputs.file(Ljava ...

  8. SecureCRT通过拷贝配置文件登陆

    不知道是不是SecureCRT有问题,有时候会出现配置丢失的情况,而自己又找不到密码了,于是从同事拷贝配置文件,发现可以成功复制服务器登陆信息 1.option -> global option ...

  9. opencv实现坐标旋转(教你框住小姐姐)

    一.项目背景 最近在做一个人脸检测项目,需要接入百度AI的系统进行识别和检测.主要流程就是往指定的URL上post图片上去,之后接收检测结果就好了. 百度的检测结果包含这样的信息: left - 人脸 ...

  10. 简单配置,让ES6脚本在浏览器里飞

    如果你只是想学习ES6语法,找个地方练习下写法.不想看环境如何搭配,就想简单的学习,那有两种简单的方式. 1.在Chrome浏览器里直接F12调出控制台   2.在浏览器里跑引用ES6的HTML页面 ...