[英]How to remove reference from object in JavaScript
我在 ractive.js 中有一个应用程序,我需要从我的组件 state 创建一些数据的副本。 例子:
const dateGroups = this.get("dateGroups");
this.set("editedPickups.beforeEdit", dateGroups);
而且我需要从“editedPickups.beforeEdit”中删除针对“dateGroups”的引用,因为如果我在“dateGroups”中更改某些内容,它也会在“editedPickups.beforeEdit”中更改。 我找到了JSON.stringify
和parse
的解决方案,但是这个 object 很大,我不知道这会是谁演的。 下面的这个例子也不起作用:
const dateGroups = Object.assign({}, this.get("dateGroups"));
您发布的示例将不起作用,因为 Object.assign 将浅拷贝 object (嵌套道具仍将保留对原始对象的引用)。 您可以使用lodash.cloneDeep()
。
您可以使用传播语法来创建新的即时
// if dateGroups is an array
this.set("editedPickups.beforeEdit", [...dateGroups]);
// if dateGroups is an object
this.set("editedPickups.beforeEdit", {...dateGroups});
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
使用 ES6,您可以使用...
语法删除 object 引用。
const objectWeWantToCopyButNotReference = { foo: 'bar' } const myNewObject = {...objectWeWantToCopyButNotReference } myNewObject.foo = 'not bar' console.log('my new object has changed:', myNewObject.foo) console.log('original object not changed: ', objectWeWantToCopyButNotReference.foo)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.