【发布时间】:2015-09-28 13:08:45
【问题描述】:
我有一个关于 javascript 如何使用以下示例代码复制对象的问题:
var blue = {a:1};
var yellow = blue
yellow = 3;
在这种情况下,作为 a=1 的对象,蓝色的值不会受到影响。但是,当这样写时:
var blue = {a:1};
blue.b = 2;
var yellow = blue
yellow.c = 3;`
在这种情况下,console.log(blue) 会显示蓝色,它的对象中也有一个额外的 {c:3}。当yellow = blue 应该只是黄色引用蓝色而不是相反时,变量蓝色如何受到黄色的影响?
【问题讨论】:
-
这是因为
yellow设置为蓝色的“参考”。您不会更改蓝色,而是将值从参考更改为另一个值。我写过这个here -
你不能在 JavaScript 中原生地“复制”对象。它们与 C++ 等语言中的指针相似。
-
不知道为什么这被否决了这么多。这似乎是对 javascript 工作原理的天真的误解。
-
这表明完全缺乏研究。
-
谢谢大家的回答。你是对的,Kith,我不知道我在这里问的概念是什么合适的词,因为我今天刚刚通过反复试验学到了它。我现在正在学习它们被称为按值/引用传递,因为在这里询问。反对票或赞成票对我来说并不重要,哈哈。我从询问中学到了,这才是最重要的。
标签: javascript