【发布时间】:2013-09-27 09:37:47
【问题描述】:
有一个小测试。我希望两个obj\d 对象最终都会改变他们的a 成员。但是change1 样式不起作用,我想知道为什么或为什么不应该这样?
<button id="btn1" onclick="test()">Change</button>
<script>
var obj1 = { a : {strblahblah: "blah"} };
var obj2 = { a : {strblahblah: "blah"} };
function test(){
change1(obj1.a);
change2(obj2);
alert("obj1: " + obj1.toSource() + "\r\nobj2: " + obj2.toSource());
}
function change1(obj){
obj = {str: "change1"};
}
function change2(obj){
obj.a = {str: "change2"};
}
</script>
结果(点击按钮后):
obj1: ({a:{strblahblah:"blah"}})
obj2: ({a:{str:"change2"}})
【问题讨论】:
-
在 change1 中忘记了
obj.a? -
@simonzack OP 将
a作为参数传递给change1。它认为这是问题的基础(通过引用或值传递的javascript)。
标签: javascript function arguments