0

我正在尝试以 OO 方式使用下划线:

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

如何在数字索引处获取项目?我确定我错过了一些东西,除了使用myCollection.toArray()[1]. 没有myCollection.get(1)吗?

另外,如果我使用myCollection.push('something'),它会返回一个array,它是不可链接的。 我真的很困惑,为什么现在还没有这样的东西。

作为对这个问题的跟进,我尝试以 OO 方式使用下划线,而不必每次都重新包装数组/对象。在经历了这些挑战之后,它似乎并不是真的要以这种方式使用?

所以现在我想知道,是否有更好的库具有通用的、可链接的、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 回答