Ember.js toArray方法的预期结果

时间:2012-08-09 20:00:25

标签: ember.js

我一直在试图找出如何到达基本js数组,以便我可以循环它 http://emberjs.com/documentation/#toc_the-enumerable-interface

  

这个很简单。要简单地将Enumerable转换为数组   将其称为toArray方法。

现在,当我使用1.pre和0.9.8.1运行以下测试时,结果不是我所期望的。

> var msp = ["1","2","3"]

> msp
["1", "2", "3"]
> for (mp_c in msp) console.log(mp_c);
0
1
2
isEnumerable
nextObject


> for (mp_c in msp.toArray()) console.log(mp_c);
0
1
2
isEnumerable
nextObject

我希望它返回一个vanilla数组,没有任何ember属性。 https://github.com/emberjs/ember.js/blob/master/packages/ember-runtime/lib/mixins/enumerable.js#L554

1 个答案:

答案 0 :(得分:1)

Ember实际上将方法应用于Array.prototype;意味着这些方法将在站点上的每个数组上(实际上更改了Array对象类,它们不会更改每个实例)。

这实际上发生在很多javascript库中,所以总是最好迭代一下(最好我的意思是,使用像ember这样的库最不易使用)。

for(var mp_c, i=0, j=msp.length; i<j; i++){
    mp_c = msp[i];
} 

编辑:ij