次のモデルを使用します。
MyModel= Backbone.Model.extend({
defaults : {
myNestedModel:undefined,
},
initialize: function() {
this.set({myNestedModel: new MyNestedModel());
}
});
'myNestedModel'という名前の単一のプロパティがあり、次の定義があります。
MyNestedModel= Backbone.Model.extend({
defaults : {
myModel:undefined,
}
});
これも、単一のプロパティ名「myModel」を持っています。MyModelのインスタンスを作成すると、次のようになります。
aModel = new MyModel();
ネストされたモデルは、MyModelのinitializeメソッドで設定されます。次に、2段階のプロセスでJSON.stringifyを使用します。
// Use Backbone.js framework to get an object that we can use JSON.stringfy on
var modelAsJson = aModel.toJSON();
// Now actually do stringify
var modelAsJsonString = JSON.stringify(modelAsJson);
これは正常に機能し、MyModelのJSON表現とMyNestedModelのプロパティを取得します。デフォルトを使用すると、問題が発生します。次に例を示します。
MyModel= Backbone.Model.extend({
defaults : {
new MyNestedModel(),
}
});
JSON.stringifyは循環参照をサポートしていないため、これにより問題が発生します。MyModelのすべてのインスタンスがMyNestedModelの同じインスタンスを共有しているため、循環参照が作成されていると思います。一方、initializeメソッドは、インスタンスごとに新しいネストされたモデルを作成します。
質問:
defaults:{}
問題の「原因」であるという私の理解は正しいですか?- 最近投稿した質問から、すべてのプロパティにデフォルトを使用する必要があるという印象を受けました。その場合、この投稿/質問で提示されたシナリオでデフォルトをどのように使用する必要がありますか?
defaults:{}
値がいつ適用されるか、いつオーバーライドされるか、インスタンスが同じデフォルトの「インスタンス」を共有するかどうかに関して、誰かがの使用法を明確にできますか?