Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/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 为什么返回的数据相同?_Javascript_Json_Node.js - Fatal编程技术网

Javascript 为什么返回的数据相同?

Javascript 为什么返回的数据相同?,javascript,json,node.js,Javascript,Json,Node.js,let statList={ 标题:{ x:“中心” }, xAxis:{ 类型:“类别”, axisTick:{ alignWithLabel:true } }, 亚克斯:{ 类型:“值” } }; 设statObj={}; statObj.chatObj=Object.create(statList); statObj.carObj=Object.create(statList); statObj.saObj=Object.create(statList); statObj.chatObj.

let statList={
标题:{
x:“中心”
},
xAxis:{
类型:“类别”,
axisTick:{
alignWithLabel:true
}
},
亚克斯:{
类型:“值”
}
};
设statObj={};
statObj.chatObj=Object.create(statList);
statObj.carObj=Object.create(statList);
statObj.saObj=Object.create(statList);
statObj.chatObj.xAxis.data=[1,2,3];
statObj.carObj.xAxis.data=[4,5,6];
statObj.saObj.xAxis.data=[7,8,9];

log(statObj)
通常我会使用以下技巧来解决这个问题

statObj.chatObj = JSON.parse(JSON.stringify(statList));
我不是说这是一个好的实践,但通过这种方式,我可以确保创建的对象在内存中有自己的地址


Object.assign()
的问题是它不能使用嵌套属性,不管怎样,创建的对象是可变的。

在设置
statObj.chatObj.xAxis
时,在
chatObj
上找不到
xAxis
,因此在原型链上搜索
xAxis
statList
chatObj
的原型),我们可以在那里找到它。到目前为止,我们已经完成了部分
statObj.chatObj.xAxis
,接下来我们将创建一个
.data
键,该键将在
statList.xAxis
上创建。使用
statObj.carObj.xAxis.data
statObj.saObj.xAxis.data
指定由
statObj.ch设置的内容atObj.xAxis.data
statList.xAxis.data
上,这就是为什么我们得到
statObj.XX.xAxis.data的结果
最后一个设置值,即
[7,8,9]

试试这个:警报((statObj.chatObj==statList));这将告诉您是否创建了statList的副本,实际上它只是对statList的引用,这将解释为什么它们是相同的。这也是我一直在做的。由于堆栈溢出,我只知道还有其他方法。实际上,这个问题是我第一次看到“Object.create”!