gpt4 book ai didi

javascript - 从通用到特定的原型(prototype)继承 - 更好的方法

转载 作者:行者123 更新时间:2023-11-30 15:02:15 24 4
gpt4 key购买 nike

我正在尝试用更简洁的方式来做到这一点:

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”原型(prototype)的“sound”属性,“Cat”继承了“Mammal”原型(prototype)的方法“purr”。但是我觉得那条线

Cat.__proto__ = Mammal 

在某种程度上是错误的,不优雅的,我不应该那样做嵌套继承。您能否确认这一点并建议如何使其成为“好方法”?我想获得相同的结果,所以咕噜声从猫和哺乳动物那里继承数据

谢谢!

最佳答案

你是对的,使用'__proto____'是个可怕的问题,你不应该改变已经创建的对象原型(prototype),它在语义上是错误的,它会导致性能问题。为什么你有这个问题?答案很简单`你的 oop 建模是错误的。这才是你应该做的

class Mammal {
constructor() {
this.sound = "Mammal sound";
}
purr() {
console.log("it's sound is:", this.sound)
}
}

class Cat extends Mammal {
constructor() {
super();
this.sound = "meow"
}
}

let purrer = new Cat();
purrer.purr(); // This also will meow

关于javascript - 从通用到特定的原型(prototype)继承 - 更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com