var obj = {"name":"aty"}; wrongChangeName(obj); alert(obj.name);//仍然是aty rightChangeName(obj); alert(obj.name);//hehe function rightChangeName(obj) { obj.name="hehe"; } function wrongChangeName(obj) { obj = {"name":"hehe"}; }
wrongChangeName就类似于我们上面的method1,而rightChangeName类似于上面的method3。也就是说如果我们想在childScope中修改parentScope中某个属性的值,那么该属性一定不能是javascript基本数据类型,一定要是对象类型。而且不能直接通过=进行赋值修改,必须是调用对象的方法来修改。