我知道這個問題已經在這裏處理了很多,但我看到了這個具體的例子在Pluralsight JS設計模式課程,我會很高興你的幫助理解那裏的關閉。Javascript關閉&「that」而不是「this」在一個具體的例子
這是例子:
var Calc = function(start) {
var that = this;
this.add = function(x) {
start = start + x;
return that;
};
this.multiply = function(x) {
start = start * x;
return that;
};
this.equals = function(callback) {
callback(start);
return that;
};
}
new Calc(0)
.add(1)
.add(2)
.multiply(3)
.equals(function(result){
console.log(result); // returns 9
});
這裏的的jsfiddle鏈接:http://jsfiddle.net/3yJ8Y/5/
我會非常高興:
- 瞭解 「即」 使用。爲什麼我們在這個特定的 示例中需要它?它與「this」一樣。你能否舉出例子並解釋我們什麼時候需要做「var that = this」?
- 理解這種從對象創建函數的方式。爲什麼我們必須使用「this」和.functionName?像this.add = ...
- 這個非常具體的閉包例子的詳細和廣泛的解釋。
非常感謝!
'that'實際上是錯在這裏(因爲它不是一個局部變量)。 '這個'會更好。 – Bergi
在這種情況下,你不需要'that','this'會工作得很好,請參閱http://jsfiddle.net/3yJ8Y/2/ – elclanrs
你對封閉的理解到底是什麼?在課程中沒有解釋,你在什麼時候迷路了? 'start'是每個'Calc'調用的局部變量。 – Bergi