在this page Backbone文档的第一个示例中,messages
对象使用方法each
。这里使用了哪种框架的方法each
: underscore.js , backbone.js ,或 jquery ?
var MessageList = Backbone.View.extend({
initialize: function() {
var messages = this.collection;
messages.on("reset", this.render, this);
messages.on("add", this.addMessage, this);
messages.on("remove", this.removeMessage, this);
messsages.each(this.addMessage, this);
}
});
在我的意见中
1.it不能是下划线方法,因为它使用_
2.它不能是jquery方法,因为它使用$
3.它不能是骨干方法,因为它使用下划线方法
答案 0 :(得分:1)
如果您查看主干文档,您会看到主干中使用了下划线方法列表。其中之一是each
方法,列在下划线方法(46)段落下。在下划线documentation中,明确指出每个方法实际上是Javascript forEach
方法的别名。它的作用是什么?
下划线描述:“它遍历一个元素列表,依次产生一个迭代函数。”
MDN描述:“forEach()按升序对数组中存在的每个元素执行一次提供的回调。对于已删除或未删除的索引属性,不会调用它未初始化(即在稀疏数组上)。“
要回答您的问题,为什么在骨干网中使用的each
方法依赖于下划线source代码中的这一小部分之前没有下划线符号:
var _ = function(obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
};
这个函数的作用是,如果还没有实例化另一个对象,则使用下划线符号实例化一个新对象。如果已经存在_
叹息的对象,则只返回它。
答案 1 :(得分:0)
“Backbone代理Underscore.js提供46个迭代功能 在Backbone.Collection上。这里并没有记录它们,但你可以 请查看Underscore文档以获取完整的详细信息......“
答案 2 :(得分:0)
几乎所有的下划线方法都可以直接用作集合方法。