这个"每个"的来源方法?

时间:2016-09-19 09:51:57

标签: javascript jquery backbone.js underscore.js

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.它不能是骨干方法,因为它使用下划线方法

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文档以获取完整的详细信息......“

http://backbonejs.org/

答案 2 :(得分:0)

几乎所有的下划线方法都可以直接用作集合方法。

http://backbonejs.org/docs/backbone.html#section-147