Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 更改JSON键上的值会更改另一个变量_Javascript_Object - Fatal编程技术网

Javascript 更改JSON键上的值会更改另一个变量

Javascript 更改JSON键上的值会更改另一个变量,javascript,object,Javascript,Object,我相信有一个解释,但我找不到它。我面临的现象是: const options = {"from":"0xa4cxxx","gasPrice":"0x2dc6c0","gas":"0x2dc6c0"}; let asd = options; asd.from = "ZMY"; console.log("asd", asd); conso

我相信有一个解释,但我找不到它。我面临的现象是:

const options = {"from":"0xa4cxxx","gasPrice":"0x2dc6c0","gas":"0x2dc6c0"};

let asd = options;
asd.from = "ZMY";

console.log("asd", asd);
console.log("options", options)
印刷品:

asd {from: "ZMY", gasPrice: "0x2dc6c0", gas: "0x2dc6c0"}
options {from: "ZMY", gasPrice: "0x2dc6c0", gas: "0x2dc6c0"}

我不明白为什么这也会改变常量变量。在不更改原始的常量选项的情况下更改asd的最佳方法是什么?为什么会发生这种情况?

您只有一个对象,但有两个对它的引用。如果要对options对象进行(浅层)克隆而不是引用它,可以这样做

const options = {"from":"0xa4cxxx","gasPrice":"0x2dc6c0","gas":"0x2dc6c0"};

let asd = {...options};
asd.from = "ZMY";

console.log("asd", asd);
console.log("options", options)

谢谢,它起作用了。你能解释一下{…选项}的作用吗,或者提供一个链接吗?它是一个扩展操作符。它创建一个新对象{},并将options对象的属性指定给新对象。您可以在这里阅读更多内容:感谢@Jkarttunenobjects,在这里找到它,数组和类都是引用类型,这意味着它们不仅传递值,而且传递内存中的引用。所以,在哪里进行更改并不重要,如果它是引用类型,它将在指向该引用的每个变量中进行更改。是的@Reyno确实如此