子类继承父亲属性遇到的问题

113 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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