在Typescript方法返回中分配值而不是引用

时间:2017-11-04 03:32:12

标签: json typescript reference clone

我在Ionic3工作。

我有一个从provider.ts调用另一个函数的函数,它返回一个接口Object。

page.ts

getList(){
  this.localdata = this.provider.getGlobalData();
}

provider.ts

getGlobalData(){
  return this.gvData;
}

现在,对localdata所做的任何更改也在gvData中更改provider.ts。 我不想复制参考,只是价值。我该怎么办?

3 个答案:

答案 0 :(得分:1)

以下代码段将返回对象的克隆版本。

<强> provider.ts

getGlobalData(){
  return JSON.parse(JSON.stringify(this.gvData));
}

你也可以这样做:

<强> page.ts

getList(){
  this.localdata = JSON.parse(this.provider.getGlobalData());
}

<强> provider.ts

getGlobalData(){
  return JSON.stringify(this.gvData);
}

答案 1 :(得分:1)

你可以像Object.assing({},this.provider.getGlobalData())这样做一些东西来获得对象的新副本。

答案 2 :(得分:0)

另一个想法是使用扩展运算符:

getGlobalData() {
  return { ... this.gvData};
}