请解释为什么在本地范围内更改全局对象字符串属性会影响全局范围内的属性,但为整个对象赋予新值不会。
在我的示例中,第一次运行 changeMyName 函数时,我得到了我所期望的 - my_global_object.name 值的变化。
但是为什么我第二次运行该函数时没有将 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;
是否存在某种“给予价值”和“通过参考”的区别?