0

ローカル スコープでグローバル オブジェクトの文字列プロパティを変更するとグローバル スコープのプロパティに影響するのに、オブジェクト全体に新しい値を与えても影響がない理由を説明してください。

私の例では、changeMyName 関数を初めて実行したときに、期待どおりの値、つまり my_global_object.name 値の変更が得られます。

しかし、関数を 2 回目に実行したときに my_global_object オブジェクトが my_global_object.children.first_child オブジェクトに変更されないのはなぜですか?

var my_global_object=new Object();
my_global_object.name='my parent name'
my_global_object.children=new Object();
my_global_object.children.first_child=new Object();
my_global_object.children.first_child.name='my first child name';

function changeMyName(child_name,new_name){
    var my_local_object;
    my_local_object=my_global_object;
    if(child_name) my_local_object=my_local_object.children[child_name];
    my_local_object.name=new_name;  
}

changeMyName(false,'new parent name'); 

changeMyName('first_child','new first child name');

この「=」割り当てはなぜですか

if(child_name) my_local_object=my_local_object.children[child_name];

この「=」とは違う?

my_local_object.name=new_name;  

「値を与える」と「参照を渡す」という違いはありますか?

4

1 に答える 1