gpt4 book ai didi

javascript - 在 Backbone.js 中扩展模型父类(super class)的默认值

转载 作者:IT王子 更新时间:2023-10-29 03:11:11 25 4
gpt4 key购买 nike

我想向this提出这个问题回答但我似乎不能这样做,我道歉。

扩展子类的默认值反射(reflect)在父类(super class)中。这似乎违背了目的,我更倾向于在子类中明确列出父类(super class)的默认值以获得我正在寻找的结构。

var Inventory = Backbone.Model.extend({
defaults: {
cat: 3,
dog: 5
}
});

var ExtendedInventory = Inventory.extend({
});

_.extend(ExtendedInventory.prototype.defaults, {rabbit: 25});

var i = new Inventory();
var ei = new ExtendedInventory();
console.log(i.attributes);
console.log(ei.attributes);

这个输出:

{cat: 3, dog: 5, rabbit: 25}
{cat: 3, dog: 5, rabbit: 25}

不是我(我想,op)想要的:

{cat: 3, dog: 5}
{cat: 3, dog: 5, rabbit: 25}

最佳答案

问题是 Inventory.prototype.defaultsExtended.prototype.defaults 具有相同的引用,因为您没有覆盖该引用。

所以你可以通过两种方式做到这一点,也许更多,但我只找到了这两种:

编辑:第一个例子不正确(见评论);请引用第二条。

var ExtendedInventory = Inventory.extend({
defaults: {
rabit:25
}
});

_.extend(ExtendedInventory.prototype.defaults, Inventory.prototype.defaults);

var ExtendedInventory = Inventory.extend({
defaults: _.extend({},Inventory.prototype.defaults,
{rabit:25}
)
});

我认为第一个看起来更干净。

关于javascript - 在 Backbone.js 中扩展模型父类(super class)的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549149/

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