方法过载:
1概念:如果我们把方法挂载在this上,那么每一个new出来的实例对象都有一
份方法的备份,或者说方法的副本,如果我们new100个实力对象的话,这种就
被称为方法过载。所以直接讲方法挂载在构造函数。
两个中括号[[prototype]] 隐式原型 杠杠proto
实例化对象中
显式原型 prototype 构造函数里
原型和原型链
原型概念
1、每个函数特指构造函数,都有一个属性prototype显示原型 他的值是一个
对象,只需要往这个对象添加方法,这些方法都会被他自己new实例对象所共享
,实例对象的隐式原型和构造函数的显式原型===
2、实例对象都有一个属性__proto__隐式原型,就等于构造函数的显式原型,
老版本显示__proto__,新版本显示[[prorotype]],等于自己的构造函数的显示
原型prototype
constructor就是构造函数
3、原型对象里面有一个属性叫做constructor,值得是构造函数本身
原型的作用 添加共享的方法和属性
原型链
构造函数也是一个实例化对象,也有构造函数(Object)
1、构造函数的原型prototype本身也是一个实例对象,也有自己的构造函数,
this指向他的构造函数就是Object,原型prototype也有属性__proto__隐式原
型,指向object的显式原型
2、Object的显式原型prototype也是实例对象,也有__proto__,指向null
3、Object的prototype商业有一个属性coosnstructor,指向object本身
原型链的作用
实例对象去查找方法,先找自己,自己没有的话沿着原型链去找,找到了就使
用,不会再向上找。直到找到Obkect为止 找不到就报错
this的指向;
全局中this指向的是
window局中的
函数中的this
this:window
window.fn();===fn();
对象的方法中
对象调用方法 所以指向的是对象
前三种都是谁调用指向谁
构造函数中
指向的是实例对象
定时器的回调中
window。setTimeout()
事件处理函数中
指向的是事件源
箭头函数
指向的是他的上一级,箭头函数没有自己的this指向,他的this绑定定义函数
所处的作用域的上一级
修改this的指向
1、call()apply()
都可以修改this的指向
都可以调用发放,在调用的时候修改this的指向
普通调用
window。函数名
函数名.call()多个参数 指向的对象 其他的都函数的实参
函数名.apply()两个参数 第一个是指向的对象 第二个是参数的数组,数
组中存放实参
bind()修改this指向
bind将函数的this绑定到目标对象中,会执行这个函数代码,返回一个新得函
。
把一个函数的this绑定到一个目标对象上 ,返回一个新的函数,从此只要点
用这个新的函数,新函数的this永远指向的都是目标对象
数
|