javascript - 在 Backbone.js 中,如何让模型父类(super class)默认值充当子类的默认值?

标签 javascript backbone.js prototypal-inheritance

我有一个定义了一些默认值的类和一个定义了一些默认值的子类。但是当我创建子类的实例时,它只查看本地默认值,不会将其默认值与父类的默认值合并。有什么简单的方法可以做到这一点,而无需在每个子类的 initialize 函数中显式地将本地默认值与父默认值合并?

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

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

var ei = new ExtendedInventory({});
console.log(ei.attributes);

这个输出:

{rabbit: 25}

不是我想要的:

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

最佳答案

你不能那样做。你必须在子类之后做这件事

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

将其放在模型定义之后。

关于javascript - 在 Backbone.js 中,如何让模型父类(super class)默认值充当子类的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505873/

相关文章:

javascript - .hover JQuery 不工作,但其他 JS 功能可以工作

javascript - 如何在 Jasmine.js 2.0.0 版本中使用 fixtures?

javascript - 静态路径内的主干?无论如何到 window.location + '#' ?

javascript - 'prototype' 属性在 `function` 类型对象设计中的作用?

Javascript 原型(prototype)继承 - 真正理解这个概念

javascript - 如何停止裁剪 IE 中 Textarea 的最后一行并降低行高?

javascript - 我应该如何构建 Firebase 身份验证密码重置流程?

javascript - 我做了一个计算器,但我不知道如何显示计算器如何进行数学运算

javascript - 主干js : the collection initialize in view module have only one model

javascript - 如何创建使用原型(prototype)属性的对象