原型链继承的优缺点

2019-06-24  本文已影响0人  Sakura_P

原型链继承的优缺点?

原型链的缺点?

原型链的优点?

实现原型链继承

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

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)。

上一篇 下一篇

猜你喜欢

热点阅读