0

私はそれをループできるようにベースjs配列に到達する方法を理解しようとしています http://emberjs.com/documentation/#toc_the-enumerable-interface

これは簡単です。Enumerable を Array に変換するには、その 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

残り火のプロパティなしで、バニラの配列を返すと思います。 https://github.com/emberjs/ember.js/blob/master/packages/ember-runtime/lib/mixins/enumerable.js#L554

4

1 に答える 1

1

Ember は実際にメソッドを Array.prototype に適用します。つまり、これらのメソッドはサイトのすべての配列に配置されます (Array オブジェクト クラスは実際には変更されますが、各インスタンスは変更されません)。

これは実際には多くの JavaScript ライブラリで発生するため、長さを反復することが常に最善です (つまり、ember のようなライブラリを使用して脆弱性が最も少ないことを意味します)。

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

編集:ij

于 2012-08-09T20:09:19.597 に答える