我想使用EmberJS复制一个复杂的对象。这个对象包含了数组、其他对象、数据值、字符串和其他值。我看到Copy方法已经被弃用,现在有一个叫做ember-copy的插件来替代它。
我尝试使用ember-copy插件,但是当我把第二个参数设置为true(表示我需要进行深度复制)时,它会提示我无法复制一个没有实现Ember.Copyable接口的对象。于是,我把这个对象转换成了一个EmberObject,并传入了Copyable mixin,但即使这样,它仍然提示我需要实现一个Copy方法。我不明白为什么我需要手动实现复制方法,如果这是框架本身应该能够完成的事情,那么为什么还需要ember-copy插件呢?
我认为克隆一个对象应该是框架必须具备的功能之一。在我使用过的每个框架中,都提供了一种可以轻松完成这个操作的方式,但是在Ember中似乎很难做到。
我尝试使用ember-copy插件,但是当我把第二个参数设置为true(表示我需要进行深度复制)时,它会提示我无法复制一个没有实现Ember.Copyable接口的对象。于是,我把这个对象转换成了一个EmberObject,并传入了Copyable mixin,但即使这样,它仍然提示我需要实现一个Copy方法。我不明白为什么我需要手动实现复制方法,如果这是框架本身应该能够完成的事情,那么为什么还需要ember-copy插件呢?
我认为克隆一个对象应该是框架必须具备的功能之一。在我使用过的每个框架中,都提供了一种可以轻松完成这个操作的方式,但是在Ember中似乎很难做到。
JSON.parse(JSON.stringify(obj))
是可行的方式。 - Rodrigo FerreiraObject
吗?而“其他值”……还有什么其他值?是否存在循环引用?- JSON方法的缺点是原型将丢失。克隆对象将从Object类创建。
和将在循环对象中抛出错误。
- 参考 http://voidcanvas.com/clone-an-object-in-vanilla-js-in-depth/。 - Jaromanda X