美文网首页
原型链继承的优缺点

原型链继承的优缺点

作者: Sakura_P | 来源:发表于2019-06-24 19:58 被阅读0次

原型链继承的优缺点?

  • 在OO语言中,继承方式通常有两种接口继承和实现继承。
    在JavaScript中无法实现接口继承(由于函数没有签名),只支持实现继承(通常依靠原型链来实现继承)。

  • 原型链实现继承的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。

原型链的缺点?

  • 在通过原型链实现继承时,原型实际上会成为另一个类型的实例。所以父类的实例属性实际上会成为子类的原型属性。结果就是所有的子类的实例都会共享父类的实例属性(引用类型的)。
  • 在创建子类型的实例时,没有办法在不影响所有实例的情况下,向父类型的构造函数传递参数。

原型链的优点?

  • 由以上可知,通过原型链继承的方式,原先存在父类型的实例中的所有属性和方法,现在也能存在于子类型的原型中了。

实现原型链继承

必须基于一个已有对象来实现,即必须有一个对象可以作为另一个对象的基础。

function Animal(o) {
  function F(){};
  F.prototype = o;
  return new F();
}

let dog = {
  name: 'origin',
  type: 'shiba',
  friends: ['KUN', 'Kris'],
  intr: function() {
    console.log(`${this.name}的朋友有:${this.friends}`);
  },
}

let otherDog = Animal(dog);
otherDog.name = '小白';
otherDog.friends.push('小新');
otherDog.intr(); // 小白的朋友有:KUN,Kris,小新

let anotherDog = Animal(dog);
anotherDog.name = '小智';
anotherDog.friends.push('皮卡丘');
anotherDog.intr(); // 小智的朋友有:KUN,Kris,小新,皮卡丘

otherDog.intr(); // 小白的朋友有:KUN,Kris,小新,皮卡丘
dog.intr(); // origin的朋友有:KUN,Kris,小新,皮卡丘
//dog的friends不仅属于dog自己所有,而且也会被otherDog 和 anotherDog 共享。

在没有必要兴师动众地创建构造函数,而只想让一个对象与另一个对象保持类似的情况,原型链继承是完全可以胜任的,不过要记得包含引用值的属性始终都会共享相应的值(就像上面的 friendsintr)。

相关文章

  • 原型链继承的优缺点

    原型链继承的优缺点? 在OO语言中,继承方式通常有两种接口继承和实现继承。在JavaScript中无法实现接口继承...

  • 继承

    原型链直接继承 原型链直接继承prototype 原型链继承_prototype属性 继承_构造函数绑定

  • 前端菜鸟成长记(三)之answer

    关于上次作业的答案 js有几种实现继承的方法(我直接给答案,原型链继承,借用构造函数继承,组合继承)?各自的优缺点...

  • js中的实现继承的几种方式

    大纲:原型链借用构造函数组合继承原型式继承寄生式继承寄生组合式继承 1、原型链: 什么是原型链? 原型链的基本思想...

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

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

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

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

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

  • javascript继承的多种方式

    JavaScript继承的多种方式和优缺点 1.原型链继承 问题: 1.引用类型的属性被所有实例共享,举个例子: ...

  • 构造函数原型的继承方式分析

    1.通过原型链继承 综上我们可以总结出 通过原型链来实现继承的原理通过原型链来实现继承的原理原型链继承方案中,父类...

  • Javascript 面向对象的程序设计(原型链与继承)

    继承 原型链 讲原型的时候提到过继承,设计原型的初衷就是为了继承,原型链是实现继承的主要方法。那什么是原型链,还记...

网友评论

      本文标题:原型链继承的优缺点

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