このタイトルに意味があるかどうかはわかりませんが、基本的には、作業中のアプリ用に非常に単純な Javascript 依存性注入コンテナーを作成しようとしています。
これはコンテナです:
jedi = new function() {
var library = {};
this.module = function(name, module) {
if (arguments.length == 1) {
return library[name];
}
library[name] = module;
};
};
次に、バックボーン モデルを作成し、次のように依存関係として追加します。
(function () {
var addColourSchemeModel = Backbone.Model.extend({
getColourJSON: function(prop) {
var cols = this.get(prop).split(',');
return {
R: cols[0],
G: cols[1],
B: cols[2]
};
}
});
jedi.module('AddColourSchemeModel', addColourSchemeModel);
})();
このモジュールの新しいインスタンスを次のように作成しようとすると、問題が発生します。
var colourModel = new jedi.module('AddColourSchemeModel')({
// json object containing model values
});
エラーが発生しますObject [object global] has no method 'set'
。
奇妙なことに、バックボーン モデルの初期化メソッドなどが呼び出されthis
ていますが、オブジェクトが初期化されるのではなくウィンドウにスコープされています。これは、ある時点で呼び出そうとしているためエラーが発生しているthis.set
場所ですが、これは実際にはウィンドウです。 .