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 ドキュメントを参照してください。

したがって、 を呼び出すときobjectchangerfnc.call(obj)、 を呼び出していることになります。test.prototype.Add.call(obj)これは、 を呼び出していることと同じobj.Add()です。

于 2012-04-13T02:27:01.700 に答える
0

「this」オブジェクトが JavaScript 関数内でアクセスされると、現在実行中のコンテキストから取得されます。call メソッドで「obj」を渡すことで、関数内の「this」オブジェクトが渡されたオブジェクトに設定されます。

于 2012-04-13T02:28:28.493 に答える