我最近開始閱讀「JavaScript:good parts」並引用了一個我無法理解的例子。我添加了一個test
功能到原來的例子:JavaScript函數調用
var add = function(a,b) {
return a+b;
};
var myObject = {
val: 0,
increment: function(inc) {
this.val += typeof inc == 'number' ? inc : 1;
}
};
myObject.increment(12);
myObject.increment();
// till this line, the val is equal to 13
// function invocation
myObject.double = function() {
var that = this;
// inner function #1
var helper = function() {
that.val = add(that.val, that.val);
};
// inner function #2
var test = function(){
this.val = add(this.val, this.val);
};
helper(); // the val is equal to 26
// test(); // the val is equal to 13
};
當我使用that
(var that = this
)我指的myObject
的字段,val
。當我在test
函數中使用這個時,我指的是同一個對象中的同一個字段,但答案不同。任何解釋將不勝感激。
感謝您的示例代碼 – Yar 2014-09-24 02:08:59