美文网首页程序员
js 继承的三种方式构造函数、原型链、组合继承

js 继承的三种方式构造函数、原型链、组合继承

作者: 爱看小说的叶子 | 来源:发表于2020-05-21 14:30 被阅读0次

第一种方式:js使用构造函数的继承。

缺点:无法继承父类的原型链。

// 构造函数继承 缺点:没有继承原型链

function Parent1(){

  this.name = 'Parent'

}

Parent1.prototype.sayParent = function(){

  console.log('say Parent!')

}

function Child(){

  Parent1.call(this)

  this.type = 'child'

}

var child = new Child()

console.log(child) // 下面运行结果 

child.sayParent() // 不能继承父类原型的方法

构造函数的继承运行结果

第二种:使用原型链继承的方式

// 缺点:父类的属性为引用类型时候,子类实例众多使用,有一个修改,其它也会变成修改值

function Parent2() {

  this.name = "Parent";

  this.ary = [1,2,3]

}

Parent2.prototype.sayParent = function() {

  console.log("say Parent!");

};

function Child() {

  this.type = "child";

}

Child.prototype = new Parent2();

var child1 = new Child();

var child2 = new Child();

console.log(child1.ary);

console.log(child2.ary);

child1.ary.push(5)

console.log(child1.ary); 

console.log(child2.ary) // 这里也造成了ary 数组也增加了

child1.sayParent();

原型链继承的方式


第三种 // 使用组合继承的方式。

解决了上面两种缺点。

function Parent3() {

  this.name = "Parent";

  this.ary = [1,2,3]

}

Parent3.prototype.sayParent = function() {

  console.log("say Parent!");

};

function Child() {

  Parent3.call(this);

  this.type = "child";

}

Child.prototype = Object.create(Parent3.prototype);

Child.prototype.constructor = Child;

var child1 = new Child();

var child2 = new Child();

console.log(child1.ary);

console.log(child2.ary);

child1.ary.push(5)

console.log(child1.ary);

console.log(child2.ary)

child1.sayParent();

console.log(child1.constructor);

组合继承的方式

相关文章

  • js基础之实现继承的几种方式

    js 实现继承的方式有: 原型链继承; 构造函数继承; 组合继承(原型链继承 + 构造函数继承)(最常用);(原型...

  • js的继承方式

    js的继承方式 一、原型链继承 原型继承的缺点: 二. 构造函数继承 构造函数继承的缺点: 三. 组合式继承 组合...

  • JavaScript的六种继承方式

    JavaScript的几种继承方式 原型链继承 借助构造函数继承(经典继承) 组合继承:原型链 + 借用构造函数(...

  • 浅析JS继承方法

    JS 实现继承的方法有:1.原型链继承2.构造函数继承3.组合继承(原型链继承 + 构造函数继承)4.原型式继承(...

  • js实现继承的几种方式

    js实现继承有几种方式,这里我们主要探讨 原型链继承 构造继承 组合继承(原型链和构造继承组合到一块,使用原型链实...

  • 继承方法

    构造函数/原型/实例的关系 借助构造函数实现继承 借助原型链实现继承(弥补构造函数实现继承不足) 组合方式(组合原...

  • 第六章(3):继承

    继承的几种方式 原型链 原型链示意图: 构造函数 组合继承(将原型链和构造函数组合在一起) 原型式继承 寄生式组合...

  • es5的部分继承以及es6的class

    一、JavaScript常用的原型继承方式 原型链继承 2,构造函数继承(对象冒充继承) 3,组合继承(原型链继承...

  • js之继承

    文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、 ES6 继承,以及 多继...

  • JS继承

    羡慕java的继承,一个extend搞定开头总结一下JS继承的方式:原型链继承,借用构造函数继承,组合继承,原型式...

网友评论

    本文标题:js 继承的三种方式构造函数、原型链、组合继承

    本文链接:https://www.haomeiwen.com/subject/onpzohtx.html