【发布时间】:2017-09-20 23:14:54
【问题描述】:
我正在尝试用更干净的方式来做到这一点:
let Mammal = {
purr: function () {
console.log("it's sound is:", this.sound)
}
}
let Cat = {
sound: "meow"
}
Cat.__proto__ = Mammal;
let purrer = Object.create(Cat)
purrer.purr(); // it's sound is: meow
现在代码按预期工作。对象“purrer”从“Cat”原型继承“sound”属性,“Cat”从“Mammal”原型继承方法“purr”。但是我觉得那行
Cat.__proto__ = Mammal
在某种程度上是错误的,不雅的,我不应该那样做嵌套继承。您能否确认并建议如何使其成为“好方法”?我想达到相同的结果,所以 purrer 继承了 Cat 和 Mammal 的数据
谢谢!
【问题讨论】:
-
我读过的所有教程都说 setPrototypeOf 是性能杀手,所以应该改用 Object.create。
标签: javascript inheritance prototype