私はこのコードブロックを手に入れました:
(function($, exports) {
var mod = function(includes) {
if (includes) this.include(includes);
};
mod.fn = mod.prototype;
mod.fn.proxy = function(func) {
return $.proxy(func, this);
};
mod.fn.load = function(func) {
$(this.proxy(func));
};
mod.fn.include = function(ob) {
$.extend(this, ob);
};
exports.Controller = mod;
})(jQuery, window);
(function($, Controller) {
mod = new Controller;
mod.toggleClass = function(e) {
this.view.toggleClass("over", e.data);
};
mod.load(function() {
this.test = 'test';
console.log(this.test); // Delayed
this.view = $("#view");
});
console.log(mod.view) // returns undefined
console.log(mod);
})(jQuery, Controller);
firefox で実行すると、firebug コンソール パネルの結果は次のようになります。
undefined
Object { toggleClass=function(), proxy=function(), load=function(), more...}
test
これは、最後の 2 つのログ関数 (コード ブロックの下部に配置されている) が最初のログ関数より前に実行されたことを意味します (console.log(this.test); // 遅延)。
なぜこのような流れになったのか説明していただけますか?