Javascript 主干JS:集合视图中表示模型的参数来自哪里?

Javascript 主干JS:集合视图中表示模型的参数来自哪里?,javascript,backbone.js,Javascript,Backbone.js,我正在学习主干JS。虽然我觉得到目前为止我取得了很大的进步,但有一件事我不明白 采用以下集合视图: App.Views.Tasks = Backbone.View.extend({ tagName: 'ul', render: function() { this.collection.each(function(a) { var taskView = new App.Views.Task({model: a}); this.$el.append(taskV

我正在学习主干JS。虽然我觉得到目前为止我取得了很大的进步,但有一件事我不明白

采用以下集合视图:

App.Views.Tasks = Backbone.View.extend({
  tagName: 'ul',
  render: function() {
    this.collection.each(function(a) {
      var taskView = new App.Views.Task({model: a});
      this.$el.append(taskView.render().el);
    }, this);
    return this;
  }
});
其中,参数
a
表示用于构建单个视图的对象。但是这个参数是从哪里来的呢


当然,我知道它来自传递到此视图的集合,但它为什么可以免费使用?在哪里定义/记录此参数可用?

每个
都是下划线中的一个方法。它接受回调——当前接受
a
作为其参数的匿名函数。这个参数可以命名为任何名称,真的。它表示我们在每个特定迭代中迭代的该数组的特定元素。为了清晰起见,我通常喜欢给它命名为
elem
value
。一个较长的版本可能类似于我们当前不断迭代的这个集合的元素

如果改用for循环,则代码如下所示:

for (var i = 0; i < this.collection.length; i++) {
  var taskView = new App.Views.Task({model: this.collection[i]});
  this.$el.append(taskView.render().el);
}
for(var i=0;i
再看一次这行:

this.collection.each(function(a) {

each
针对集合中的每个模型调用一个函数
a
被定义为方法的第一个参数,将表示特定的模型

您基本上是在询问
下划线
实用程序库中的函数是如何工作的

它迭代集合中的每个项,并将其传递给回调函数。在此代码中,您将集合中的每个项目设置为
App.Views.Task
的模型,并将其附加到UI元素,然后返回元素


下划线
是主干的一个依赖项,可以找到
每个
的文档。

每个
在此上下文中不是数组原型方法。这是一个
下划线
实用函数。感谢您的澄清,您在我的代码中的意思是
a
(或它的名称)是可用的,因为下划线的
每个
函数都传递了它?
a
实际上是您收藏中的一个项目。该参数的更好名称可以是
task
item
itemInCollection
。将为集合中的每个项调用回调函数。因此,是的,
每个
函数都会将其传递给回调函数!:)谢谢,现在我明白了!其实很简单!