gpt4 book ai didi

javascript - 在对象原型(prototype)中定义继承

转载 作者:行者123 更新时间:2023-11-29 21:45:05 25 4
gpt4 key购买 nike

我在 javascript 中实现从父类继承的函数。它与这种代码风格完美搭配。

function Foo(){}

Foo.prototype = {
constructor: Foo,
name: 'foo',
tostring: function()
{
return this.name;
}
};

function Bar(){}

Bar.prototype = new Foo();
Bar.prototype.name = 'bar';

var b = new Bar();
console.log(b.tostring()); // says 'bar'

没关系。但是我在 Bar 中有很多属性,我不想每次都重复 Bar.prototype.someProp 所以我使用了简写版本并且它没有继承。

function Bar(){}
Bar.prototype = new Foo();
Bar.prototype = {
constructor: Bar,
name: 'bar'
};

console.log(b.tostring()); // doesn't work since the method doesn't exist

我假设 Bar.prototype 正在被 Javascript 的原生对象覆盖。如何使用简写 Bar.prototype = {} 继承并避免重复?

最佳答案

如果你使用...

Bar.prototype = {
constructor: Bar,
name: 'bar'
};

...您正在覆盖 Bar 原型(prototype)中的所有内容,将其替换为新对象。尝试分别设置 Bar.prototype.constructor = xxxBar.prototype.name = 'bar'

你可以定义一个辅助函数来减少重复,但如果你只需要它一次,它可能不值得:

function extend_with(obj, kv) {
for (var k in kv) {
obj[k] = kv[k];
}
}

extend_with(Bar.prototype, {
constructor: Bar,
name: 'bar'
});

关于javascript - 在对象原型(prototype)中定义继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501978/

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