1

我的问题是我不明白这里称为“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 
4

2 回答 2

1

callFunction对象的方法。它以传入的对象作为this函数中的值调用函数。请参阅MDN 文档待命。

所以objectchanger调用fnc.call(obj)的时候就是调用test.prototype.Add.call(obj),跟调用是一样的obj.Add()

于 2012-04-13T02:27:01.700 回答
0

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

于 2012-04-13T02:28:28.493 回答