我想創建一個具有自己範圍的prototype
函數。爲此,我使用匿名函數,但我找不到訪問對象成員的方法。以匿名函數訪問此代碼
這裏是什麼,我想實現一個簡化版本:
function F() {
this.counter = 0;
}
F.prototype.increment = (function() {
var lastIncrementTime = -1;
var caller = this; // <--- it fails here because this is the Window object
return function(time) {
if (time > lastIncrementTime) {
caller.counter++;
lastIncrementTime = time;
return caller.counter;
}
return caller.counter;
}
})();
f = new F();
f.increment();
我知道,因爲這並不是指F
或f
對象失敗。
有沒有辦法訪問它?
我想擁有特定於實例的計數器。 Kolink的版本似乎工作得很好,我明白在你的情況下,'this'將引用原型對象,它不適用於特定於實例的計數器,是嗎? –
@MadEchet如果你想要一些特定的實例,你可能希望它在_constructor_中,而不是在_prototype_中。 Kolink的解決方案「有效」,因爲你使用的是'caller',你可以正常使用'this',但是這個解決方案仍然在所有實例中共享'lastIncrementTime'。 –
的確如此,我沒有意識到lastIncrementTime是共享的。謝謝! –