0
如果我創建一個變量,比如_this,並將其賦值給它,它將作爲閉包捕獲,而不是對當前版本的引用。爲什麼?爲什麼「this」在關閉中被捕獲?
示例代碼:
var AnimCore = (function() {
function AnimCore(ctx) {
this.ctx = ctx;
}
AnimCore.prototype.beginAnimation = function() {
this.animLoop();
};
AnimCore.prototype.animLoop = function() {
var _this = this;
this.ctx.drawSomething(); // removed actual drawing code, this is a proxy for it.
window.setTimeout(function() {
_this.animLoop();
}, 1000/60);
};
return AnimCore;
})();
在這種情況下,被_this這個功能被稱爲每次結合到初始此,而不是新的。爲什麼?
[更新] 我現在明白,關閉發生在匿名函數中,這就是爲什麼_這總是指向相同的東西。然而,下一個問題是,這個.ctx爲什麼每次都工作?如果我不使用匿名函數,它會在第一次後失敗。
我不明白這個問題。爲什麼?因爲這是如何JavaScript關閉工程... – gdoron
提出不同的問題 - 你期望發生什麼?你能給個例子嗎? – Christoph
@Christoph,看我的更新。代碼稍微更新。 –