关于javascript:继承的几种方式及优缺点

42次阅读

共计 777 个字符,预计需要花费 2 分钟才能阅读完成。

  1. 借用构造函数继承,应用 call 或 apply 办法,将父对象的构造函数绑定在子对象上
  2. 原型继承,将子对象的 prototype 指向父对象的一个实例
  3. 组合继承

原型链继承:(不益处:子类实例共享属性,造成实例之间的属性会相互影响)
解决不益处方法是 借用构造函数(类式继承) 又呈现没有原型,无奈复用

function Parent() {this.name = "heyushuo";}
Parent.prototype.sayParentName = function() {console.log(this.name);
};

function Child() {this.name = "kebi";}
//1. 此时把 Child 的原型重写了, 换成了 Parent 的实例
//2. 换句话说, 原来存在 Parent 的实例中的属性和办法, 当初也存在 Child.prototype 中了
Child.prototype = new Parent();
//3. 在继承了 Parent 实例中的属性和办法后根底上, 又增加了属于本人的一个新办法 (这里两个名字一样会笼罩)
Child.prototype.sayChildName = function() {console.log(this.name);
};
var Person = new Child();
console.log(Person);
// 所以当初 Person 指向 Child 的原型,Child 的原型指向 Parent 的原型 (因为 Child 的原型对象等于了 Parent 的实例, 这个实例指向 Parent 的原型)

原型继承:

  • 长处:复用父级办法
  • 毛病:子类没有本人的属性,所有属性办法只能复用父级,解决不好容易跟别的实例串数据

组合式继承:

思路——应用原型链实现对原型属性和办法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又保障每个实例都有它本人的属性

正文完
 0