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

Passing by Reference in JavaScript(Call Method)

本文关键字:调用 方法 引用 JavaScript      更新时间:2023-09-26

我在这里的问题,我不明白名为"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 

callFunction对象上的方法。它调用一个函数,并将传入的对象作为函数中的this值。请参阅随叫随到的 MDN 文档。

所以当objectchanger调用fnc.call(obj)时,它正在调用test.prototype.Add.call(obj),这与调用obj.Add()相同。

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