-
apply、call、bind
js内置了3个借用函数,可以改变this的含义。
call方法和apply方法在调用函数的同时可以改变this含义。
call的使用语法:函数.call(新的this含义, 函数需要的实参)
call的使用场景: 让伪数组可以调用某些数组方法: 数组方法.call(伪数组)
检测数据为对象时的精准类型: 对象.toString.call(数据)
apply的使用语法:函数.apply(新的this含义, [函数需要的实参])
bind是复制出一个新的函数,并改变新函数中的this。某些函数在使用的时候,希望其中的this 为其他对象, 可以将原函数通过bind 复制使用
bind使用语法:函数.bind(新的this含义),返回新的函数。
箭头函数中的this含义无法被改变
-
继承的方式
`继承`是让一个对象可以拥有另一个对象的属性和方法,而不用自己去添加,类似于原型和实例对象的关系。面向对象编程,有一个特性就是继承。原型继承: 将子对象的原型改成父对象借用继承: 在子构造函数中通过借用函数执行父构造函数混合继承: 原型继承 + 借用继承es6 的继承:class 子类 extends 父类{},子类中有constructor, 在constructor里面的最前面必须调用super(),调用super就相当于在调用父类的constructor