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