持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
子类使用super关键字访问父类的方法
用于访问和调用对象父类上的函数
class Son extends Father {
constructor(x, y) {
super(x, y); //使用super调用了父类中的构造函数
}
}
如果子类想要继承父类的方法,同时在自己的内部扩展自己的方法
利用super调用父类的构造函数,super必须在子类之前调用
构造函数的问题
构造函数方法很好用,但是存在浪费内存的问题
继承call
call()可以修改this的会向,使用call的时候,参数1位修改后的this指向
function fn(x, y) {
console.log(this);
console.log(x + y);
}
var o = {
name: 'ldf'
};
fn.call(o, 1, 2);
子构造函数继承父构造函数中的属性
function Son(uname, age ,score) {
//使用call方法实现子类继承父的属性
Father.call(this, uname, age);
this.score = score;
}
借用原型对象继承方法
Son.prototype = new Father(); //这样直接赋值会有问题,如果修改了子原型对象,
父原型对象也会跟着变化
Son.prototype = new Father(); // 如果利用对象的形式修改了原型对象,别忘了利用constructor 指回原来的构造函数 Son.prototype.constructor = Son;
bind() 方法不会调用函数,但是能改变函数内部this 指向,返回的是原函数改变this之后产生的新函数
如果只是想改变 this 指向,并且不想调用这个函数的时候,可以使用bind
call apply ,bind应用场景
call 和 apply 会调用函数, 并且改变函数内部this指向
call 和 apply传递的参数不一样,call传递参数使用逗号隔开,apply使用数组传递
call经常会用来做继承
apply经常跟数组有关系,比如借助于数学对象实现数组最大值和最小值
bind函数不调用函数,但是可以改变this的指向,比如定时器内部的this指向
this 指向
1.在构造函数中,里面 this 指向的是对象的实例 ldh
2.原型对象函数里面的 this,指向的是实例对象 ldh