在 Typescript 方法中赋值而不是引用 return
Assign value not reference in Typescript method return
我在 Ionic3 工作。
我有一个函数可以从 provider.ts
调用另一个函数,它 returns 是一个接口对象。
page.ts
getList(){
this.localdata = this.provider.getGlobalData();
}
provider.ts
getGlobalData(){
return this.gvData;
}
现在,对 localdata
所做的任何更改也会在 provider.ts
中更改 gvData
。
我不想复制参考,只是复制价值。我该怎么做?
以下代码段将 return 对象的克隆版本。
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);
}
您只需执行类似 Object.assing({},this.provider.getGlobalData())
的操作即可获取对象的新副本。
另一个想法是使用扩展运算符:
getGlobalData() {
return { ... this.gvData};
}
我在 Ionic3 工作。
我有一个函数可以从 provider.ts
调用另一个函数,它 returns 是一个接口对象。
page.ts
getList(){
this.localdata = this.provider.getGlobalData();
}
provider.ts
getGlobalData(){
return this.gvData;
}
现在,对 localdata
所做的任何更改也会在 provider.ts
中更改 gvData
。
我不想复制参考,只是复制价值。我该怎么做?
以下代码段将 return 对象的克隆版本。
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);
}
您只需执行类似 Object.assing({},this.provider.getGlobalData())
的操作即可获取对象的新副本。
另一个想法是使用扩展运算符:
getGlobalData() {
return { ... this.gvData};
}