在JavaScript中传递引用(调用方法)

时间:2012-04-13 02:22:59

标签: javascript prototype pass-by-reference

我的问题是,我不明白这个名为“objectchanger”的方法是如何工作的 这是源

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 

2 个答案:

答案 0 :(得分:1)

callFunction对象上的一种方法。它调用一个带有传入对象的函数作为函数中的this值。请参阅电话会议中的MDN docs

因此,当objectchanger调用fnc.call(obj)时,它会调用test.prototype.Add.call(obj),这与调用obj.Add()相同。

答案 1 :(得分:0)

当在javascript函数中访问“this”对象时,它从当前执行的上下文中获取它。通过在调用方法中传递“obj”,函数中的“this”对象被设置为传入的对象。