0

オブジェクト指向の方法でアンダースコアを使用しようとしています:

var myCollection = _([]);
myCollection.push('one');
myCollection.push('two');
myCollection.push('three');

数値インデックスでアイテムを取得するにはどうすればよいですか? を使用する以外に、何かが欠けていると確信していmyCollection.toArray()[1]ます。ありませんmyCollection.get(1)か?

また、を使用するmyCollection.push('something')と、連鎖不可能な が返されますarray なぜこのようなものがすでに存在しないのか、私は本当に混乱しています。

この質問のフォローアップとして、私はオブジェクト指向の方法でアンダースコアを使用しようとしています。毎回配列/オブジェクトをラップし直す必要はありません。これらの課題のいくつかの後、実際にはこのように使用することを意図していないように見えますか?

だから今、私は疑問に思っています.ジェネリックで連鎖可能なOOPのコレクションラッパーを持つより良いライブラリはありますか?

4

2 に答える 2

3

ラップされた配列 (またはオブジェクト) 上の単一の要素に直接アクセスするためにそのメソッドが本当に必要な場合は、次を使用して簡単に実装できます_.mixin

_.mixin({
    get: function(obj, key) { // works on arrays as well
         return obj[key];
    }
});
于 2013-10-31T00:32:43.303 に答える
1

このようにアンダースコアを本当に使いたい場合は、必要なメソッドを自分で追加するだけです_.prototype:

// probably name it something other then get
_.prototype.get = function(i) {
    return this.toArray()[i];
}
于 2013-10-31T00:24:57.517 に答える