Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象和数组引用在深度上表现为不同的depending_Javascript_Arrays_Object_Reference - Fatal编程技术网

Javascript对象和数组引用在深度上表现为不同的depending

Javascript对象和数组引用在深度上表现为不同的depending,javascript,arrays,object,reference,Javascript,Arrays,Object,Reference,只是想弄明白为什么会这样 我尝试了一些javascript数组、对象和对对象的引用。然后我到了一个我不明白的地步 我创建了一个包含对象的数组;然后,当我引用该对象并更改属性时;原始和参考的值将自动更改。很明显,因为这是一个参考,而不是一个副本 当我创建一个包含一个对象的数组,并创建一个包含另一个对象的数组时,我也期望得到同样的结果,但在这种情况下,原始对象保持不变 也许它有一个非常简单的解释,我现在不知道。有人能给我解释一下吗 谢谢 var foo=[ { “酒吧”:“酒吧” } ]; v

只是想弄明白为什么会这样

我尝试了一些javascript数组、对象和对对象的引用。然后我到了一个我不明白的地步

我创建了一个包含对象的数组;然后,当我引用该对象并更改属性时;原始和参考的值将自动更改。很明显,因为这是一个参考,而不是一个副本

当我创建一个包含一个对象的数组,并创建一个包含另一个对象的数组时,我也期望得到同样的结果,但在这种情况下,原始对象保持不变

也许它有一个非常简单的解释,我现在不知道。有人能给我解释一下吗

谢谢

var foo=[
{ 
“酒吧”:“酒吧”
} 
];
var ref=foo[0];
ref.bar=“新条”;
console.info(foo[0].bar);//输出:新条
控制台信息(参考栏);//输出:新条
console.info(foo[0].bar==ref.bar);//输出:真
变量foo2=[
{ 
“bar2”:[
{“嵌套”:“嵌套”}
] 
} 
];
var ref2=foo2[0]。bar2;
ref2.nested=“nested 2”;
console.info(foo2[0].bar2[0].nested);//输出:嵌套
console.info(ref2.nested);//输出:嵌套2

console.info(foo2[0].bar2[0].nested==ref2.nested);//输出:false
一切正常。一切都没有改变。你很明白。 只是将foo2[0].bar2放在var ref2中

您可以看到foo2[0]。bar2在这里是一个数组。你什么时候做的

*ref2.nested = "nested 2";*
它向参照2添加了一个新对象。 你想做的是

*var ref2 = foo2[0].bar2[0];*
或者其他微妙的事情。 Javascript是同一个朋友。只有我们失去了参考

*var ref2 = foo2[0].bar2[0];*