Emberjs中的Native Array不支持深层复制?

时间:2012-03-13 22:26:09

标签: ember.js

Emberjs中的Native Array不支持深层复制?我看到它只是在复制方法中返回切片数组。这是一个错误吗?

2 个答案:

答案 0 :(得分:3)

目前,由@adamjmurray报道,这是对Ember的改进:https://github.com/emberjs/ember.js/issues/588

还有一个实现它的主张。您可以像这样使用它:

var NativeArray = Ember.Mixin.create(Ember.NativeArray, {
    copy: function(deep) {
        if (deep) {
            return this.map(function(item){ return Ember.copy(item, true) });
        } else {
            return this.slice();
        }
    }
});

NativeArray.apply(Array.prototype);

答案 1 :(得分:2)

Ember.Copyable中,注释表明应该有一个布尔参数,如果为true则会生成深层副本,但显然它尚未实现。您始终可以使用自己的方法覆盖它。像这样的东西适用于简单的对象(注意:未经测试,所以考虑这个伪代码)

copy: function(deep) {
  if(deep) return $.extend(true, [], this);
  else return this._super();
}