let statList = {
  title: {
    x: "center"
  },
  xAxis: {
    type: "category",
    axisTick: {
      alignWithLabel: true
    }
  },
  yAxis: {
    type: "value"
  }
};

let 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];

console.log(statObj)

为什么返回的statObj.XX.xAxis.data相同?
为什么当我使用console.log(JSON.stringify(statObj))时,结果是{"chatObj":{},"carObj":{},"saObj":{}}

最佳答案

通常我会用下面的技巧来解决这个问题

statObj.chatObj = JSON.parse(JSON.stringify(statList));

我不认为这是一个好的实践,但通过这种方式,我可以确保创建的对象在内存中有自己的地址。
Object.assign()的问题是它不能处理嵌套属性,不管怎样,创建的对象是可变的。

关于javascript - 为什么返回的数据相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45875652/

10-09 15:57