2010-12-29 7 views

答えて

2

質問はすでにちょうどそれがより明確にするために、答えている:

function myFunc(theObject) { 
     theObject = {make: "Ford", model: "Focus", year: 2006}; 
} 

は(何か似ています構文を忘れて、メッセージを入手してください):

function myFunc(theObject) { 
     theObject = new TheObject("Ford","Focus",2006); 
} 

つまり、パラメータは参照されますが、新しいオブジェクトを作成することによってその参照が変更されています。

注:Java構文は非常に人気があるので、私は、教授的目的を説明するために、Javaのような構文を使用して、完全に新しいインスタンスを作成することを考えました。 "TheObject"はクラスの名前です。

+0

「TheObject」はなぜ新しくなったのですか?それは何をするためのものか? – DarkLightA

+0

'};'は速い書き込みのために固定された方法で – NickAldwin

+0

によって ');'にする必要があります –

0

Javascriptは、あなたが提供した変更を行うときに、オリジナルのリファレンスではなくローカルリファレンスを変更しています。 SO上のこの投稿は役立つはず:

Is JavaScript a pass-by-reference or pass-by-value language?

+0

なぜこれがダウン表示されましたか?これは間違っていますか?それは他の答えと同じように聞こえる。 – adam0101

+0

どちらか分かりません。私はいくつかの素晴らしい例と説明を受け入れることはできません別のSOの投稿に言及していると思います。 –

9

あなたはmyFunctheObject = { ... }を行うと、あなたは新しいオブジェクトを作成し、ローカル変数theObjectへの参照を代入しています。これで元のオブジェクトは変更されません。

元のオブジェクトの内容を変更するには、直接このように、そのプロパティを変更する必要があります

theObject.make = 'Ford'; 
theObject.model = 'Focus'; 
theObject.year = 2006; 
+0

私はこれを取得しません。私は 'myFunc'の' theObject'が、ローカル変数ではなく、 'myFunc'に渡されたオブジェクトへの参照であると考えましたか? –

+0

それはそうですが、新しいオブジェクトをローカル変数に割り当てています。渡されたオブジェクトのプロパティを変更するのではありません。 – kemiller2002

+1

@Tola Odejayi: 'theObject'自体は' mycar'への参照ではなく、 'mycar'への参照を保持します。 'myObject'を使って' mycar'を変更することはできますが、 'theObject'に別のオブジェクトを割り当てると、新しい参照が保持されます。 – casablanca

0

変更この:ここ

function myFunc(theObject) { 
     theObject = {make: "Ford", model: "Focus", year: 2006}; 
    } 

あなたは新しいオブジェクトにあなたの変数を再割り当てされています。パラメータはオブジェクトを保持する変数にリンクしないため、元の値は変更されません。

:。これはあなたが渡されたオブジェクトのプロパティを変更する

function myFunc(theObject) { 
    theObject.make = "Ford"; 
} 

関連する問題