Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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 对象属性,而不是点:Object={…Object}_Javascript_Angular_Object_Javascript Objects - Fatal编程技术网

Javascript 对象属性,而不是点:Object={…Object}

Javascript 对象属性,而不是点:Object={…Object},javascript,angular,object,javascript-objects,Javascript,Angular,Object,Javascript Objects,在angular 4项目中,有一行代码this.config={…this.config}。经过一些检查,它似乎没有更改this.config。但是删除该行会中断对this.config的更改检测 下面是使用该对象的组件 这是唯一修改此对象的函数 private updateConfig(value, key) { if (!this.config) { this.config = {}; } this.config[key] = value; this

在angular 4项目中,有一行代码
this.config={…this.config}
。经过一些检查,它似乎没有更改
this.config
。但是删除该行会中断对
this.config
的更改检测

下面是使用该对象的组件

这是唯一修改此对象的函数

  private updateConfig(value, key) {
   if (!this.config) {
      this.config = {};
   }
   this.config[key] = value;
   this.config = { ...this.config }; // why does this work?
  }

有人能解释一下this.config={…this.config}的作用吗?

当你创建一个对象时,你创建了一个内存引用。将一个对象展开到另一个对象中会创建此对象的副本,但位于不同的内存引用中

让我们想象一下:

constobj={id:1,sub:{id:11};
const copy={…obj};
console.log(obj==复制);//假的
console.log(obj.sub==copy.sub);//真的

console.log(obj.id==copy.id);//true
创建对象时,创建内存引用。将一个对象展开到另一个对象中会创建此对象的副本,但位于不同的内存引用中

让我们想象一下:

constobj={id:1,sub:{id:11};
const copy={…obj};
console.log(obj==复制);//假的
console.log(obj.sub==copy.sub);//真的

console.log(obj.id==copy.id);//true
查找对象排列。它是原始对象的一个浅层副本。在这个赋值之后,可能有其他东西修改了
this.config
?请发布完整的代码。@CertainPerformance谢谢。@bergi将更新。谢谢,谁否决了这个?这是一个措辞得体的问题,询问一些真正令人困惑的问题。即使你知道什么是对象排列,也不清楚为什么要这样做。查看对象排列。它是原始对象的一个浅层副本。在这个赋值之后,可能有其他东西修改了
this.config
?请发布完整的代码。@CertainPerformance谢谢。@bergi将更新。谢谢,谁否决了这个?这是一个措辞得体的问题,询问一些真正令人困惑的问题。即使你知道什么是对象传播,也不清楚为什么要这样做。非常感谢。现在说得通了,非常感谢。现在有道理了。