一.今日学习内容 1.方法过载 概念:如果方法挂在this上,那么每一个new出来的实例对象都有一份方法的副本,如果new100个实例对象,就有100个副本 解决方法:给原型prototype上添加方法 2.原型与原型链 原型: 每个函数(特指构造函数),都有一个属性prototype(显式原型)原型,他的值是一个对象,只要往这个对象中添加方法,这些方法都会被new出来的实例对象共享。 实例对象都有一个属性__prop__隐式原型(新版本[[prototype]]),等于自己构造函数的显示原型 prototype 原型对象里面,有一个属性叫constructor,指向构造函数自己本身 原型的作用是共享方法 3.原型链 原型prototype本身也是一个实例对象,也有自己的构造函数,他的构造函数是Object,原型prototype也有属性__proto__隐式原型,指向Object的显式原型prototype Object的显式原型prototype也是实例对象,也有__proto__,指向null Object的prototype上有一个属性constructor,指向构造函数Object自己本身 4.原型链的作用:实例对象去查找方法,先找自己,自己没有,沿着原型链找,找到,就使用,直到找到Object为止,找不到就报错。 5.this指向(7种) 全局中的this----window 函数中的this----window(谁调用指向谁) 对象方法的this---对象(谁调用指向谁) 构造函数中的this----实例对象 定时器的回调中----window 事件处理函数----事件源 箭头函数---上一级,没有自己的this指向,它的this绑定定义函数所处的作用域 6.修改this指向 函数名(); 谁调用指向谁 函数名.call(this对象,实参1,实参2) 不确定个数的参数,第一个参数是this新的指向,后面的参数按照所需要的实参依次传入 函数名.apply(this对象,[实参1,实参2]) 两个参数,第一个参数是this新的指向,第二个参数是一个数组,数组中传入实参 函数名.bind() 可以把一个函数的this绑定到一个目标对象上,然后返回一个新的函数,此后,只要调用这个新函数,新函数的this永远指向绑定的目标对象
|