我讀克羅克福德的JavaScript:好的部分,並正在與這段代碼從教訓調用模式亂搞:該double
方法被稱爲混淆`this`關鍵字
var br = "<br />";
var add = function(a,b) {
a + b;
}
var myObject = {
value: 0,
increment: function(inc) {
this.value += typeof inc === "number" ? inc : 1;
}
};
myObject.increment(2);
document.write(myObject.value + br); // 2
myObject.increment();
document.write(myObject.value + br); // 3
myObject.increment(3);
document.write(myObject.value + br); // 5
myObject.double = function() {
var that = this;
var helper = function() {
that.value = add(that.value,that.value);
return that.value;
};
helper();
};
myObject.double();
document.write(myObject.value); //undefined
後,我得到undefined
。有誰知道爲什麼?
我不認爲這是問題的根源,但使用保留字作爲,不建議在JavaScript標識符。 'double'是一個保留字。 – Jacob
@Jacob:50%正確:允許Javascript中特定數據類型的計劃不再存在,因此double不再位於最新標準中的保留字列表中。由於許多人仍然使用早期的瀏覽器,這被定義爲保留字,所以應該避免使用它。 – Pindatjuh