2012-04-13 88 views
1

這裏我的問題,我不知道如何做所謂的「objectchanger」的方法效果 路過這裏是源通過參考在JavaScript(調用方法)

function test() 
{ 
    this.value=5; 
} 

test.prototype.Add=function() 
{ 
    this.value++; 
}; 

var obj = new test(); 

obj.Add(); 

alert(obj.value); 


function objectchanger(fnc, obj) 
{ 
    fnc.call(obj); 
    //obj.fnc(); >> without this line of code it works fine but why????? 
    //why i don't need to write this code -- 
} 

objectchanger(obj.Add, obj); 
alert(obj.value); // the value is now 7 

回答

1

callFunction對象的方法。它使用傳入的對象調用一個函數,作爲函數中的this值。請致電MDN docs

因此當objectchanger調用fnc.call(obj)時,它調用test.prototype.Add.call(obj),這與調用obj.Add()相同。

0

當在JavaScript函數中訪問「this」對象時,它將從當前正在執行的上下文中獲取它。通過在調用方法中傳遞「obj」,函數中的「this」對象被設置爲傳入對象。