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

在JavaScript中通过引用传递(调用方法),javascript,prototype,pass-by-reference,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

我的问题是,我不明白名为“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 

call
函数
对象上的一种方法。它使用传入的对象作为函数中的
this
值来调用函数。见随叫随到


因此,当
objectchanger
调用
fnc.call(obj)
时,它正在调用
test.prototype.Add.call(obj)
,这与调用
obj.Add()
调用是
函数
对象上的一个方法相同。它使用传入的对象作为函数中的
this
值来调用函数。见随叫随到

因此,当
objectchanger
调用
fnc.call(obj)
时,它正在调用
test.prototype.Add.call(obj)
,这与调用
obj.Add()

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

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