函数名.call(this,..)函数运行时this指向的对象、函数运行时传入的参数(可以是多个)
函数名.apply(this,[1,2,...])函数运行时this指向的对象、函数运行时传入的数组
函数名.bind(this,1,2,3)函数运行时this指向的对象,bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用,返回一个原函数的拷贝,并拥有指定的 this 值和初始参数。
如果call,apply,bind传参时,第一个参数传入的不是null或者undefined,传入什么this指向什么
如果第一个参数传入的是null或者undefined ,非严格模式下指向window,当目标函数被调用时,被预置入绑定函数的参数列表中的参数。
继承的方式
继承就是子类继承父类的属性和方法,目的可以让子类的实例能够使用父类的属性和方法
第一种方法:复用父原型中的代码,我们只需改变原型链即可。将子构造函数的原型对象的 proto
属性指向父构造函数的原型对象。
第二种方法
使用 new 操作符来替代直接使用 proto 属性来改变原型链。
第三种方法
使用一个空构造函数来作为中介函数,这样就不会将构造函数中的属性混到 prototype 中
第四种方法
es6类的继承extends。