繁体   English   中英

如何从 JavaScript 中的 object 中删除参考

[英]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.stringifyparse的解决方案,但是这个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM