我想用EmberJS复制一个复杂的对象。该对象包含数组,其他对象,数据值,字符串和其他值。我看到不赞成使用Copy方法,并且有一个名为ember-copy的插件来替换它。
我尝试使用ember-copy插件,但是当我将第二个参数设置为true(指示我想要深层复制)时,它说我无法复制未实现Ember.Copyable的对象。我将这个对象转换为EmberObject,并传递了可复制的混合,但是即使如此,它仍然说我需要实现一个Copy方法。我不明白如果需要手动实现,为什么需要使用ember-copy插件。
我认为克隆对象应该是框架必须具备的能力。我使用的每个框架都提供了一种轻松进行此操作的方法,但是使用Ember似乎很难。
答案 0 :(得分:2)
您还可以使用扩展运算符(ES6)复制(和修改)对象。 ember.copy实际上已按照ember文档中的说明弃用。
const original = { a: 1, b: 2 };
const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 }
const { a, ...noA } = copy; // noA => { b: 2, c: 3 }
答案 1 :(得分:0)
您应该调用Ember的copy
帮助程序来无缝地深度复制复杂对象。
它接受两个参数obj
和deep
。
obj(Object)
是要克隆的对象,deep(Boolean)
如果为true,则会复制该对象的深层副本。
例如
obj1 = {name: 'john', surname: {paternal: 'Doe', maternal: 'Cena'}};
obj2 = Ember.copy(obj1, true); // creates deep clone of my obj.
答案 2 :(得分:0)
Object.assign():https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
this.set('copiedObject', Object.assign({}, originalObject));