定義したオブジェクトと同じオブジェクトである必要があります。何回も渡しても、同じオブジェクトを継続します。どうして?あなたはこれがそうでないことを示す何かを見ていますか?
プリミティブ値は値渡しで、オブジェクトは参照渡しであるため、混乱するかもしれません。
これは、差のかなりまともな説明である:http://snook.ca/archives/javascript/javascript_pass
オチができる彼のコードの例である:
ここプリミティブ値、この場合は整数を扱う例です。プリミティブ値の場合、 プリミティブ値は値渡しされます。これは、値の新しいコピーが関数呼び出しでスタックに置かれることを意味します。また、関数内で値に加えられた変更は、その関数に対してローカルであることを意味します。
function myfunction(x)
{
// x is equal to 4
x = 5;
// x is now equal to 5
}
var x = 4;
alert(x); // x is equal to 4
myfunction(x);
alert(x); // x is still equal to 4
これは、参照渡しがどのように機能するかを示す例です。この場合、オブジェクトへの参照が関数に提供され、そのオブジェクトへの変更はその参照を持つすべての人に見られます。
function myobject()
{
this.value = 5;
}
var o = new myobject();
alert(o.value); // o.value = 5
function objectchanger(fnc)
{
fnc.value = 6;
}
objectchanger(o);
alert(o.value); // o.value is now equal to 6
最後に、関数に渡された参照を新しい参照で置き換えると、この変更は関数の外部に反映されません。前の例をビルド:
function myobject()
{
this.value = 5;
}
var o = new myobject();
function objectchanger2(fnc)
{
function myObject2()
{
this.value = 10
}
fnc = new myObject2()
}
objectchanger(o);
alert(o.value); // o.value is still 5
ありがとうございました!私は本当にこれを聞く必要があった。 – Sam3k