9

いくつかのデフォルトを定義するクラスと、いくつかのデフォルトを定義するサブクラスがあります。しかし、サブクラスのインスタンスを作成すると、ローカルのデフォルトのみが表示され、そのデフォルトが親のデフォルトとマージされません。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}
4

1 に答える 1

7

そんなことはできません。サブクラスの後にそれを行う必要があります

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

これをモデル定義の後に置きます。

于 2011-06-28T14:59:30.287 に答える