我知道在JS中,对象是通过引用传递的,例如:
function test(obj) { obj.name = 'new name'; } var my_obj = { name: 'foo' }; test(my_obj); alert(my_obj.name); // new name
但是以下原因为何不起作用:
function test(obj) { obj = {}; } var my_obj = { name: 'foo' }; test(my_obj); alert(my_obj.name); // foo
我已将对象设置为{}(空),但仍然显示foo。
{}
foo
谁能解释这个背后的逻辑?
如果您熟悉指针,可以做一个类比。实际上,您正在传递一个指针,因此obj.someProperty将取消对该属性的引用,并实际上覆盖该属性,而仅重写obj将杀死该指针而不覆盖该对象。
obj.someProperty
obj