24

我试图找出一些“模式”来建立一个骨干项目。在下面的示例中,在“render”函数中,作者返回了一个“this”的实例。

为什么是这样?它是特定于示例的,还是 Backbone 常见的?我不明白为什么要在“渲染”函数中返回“this”。

例子

http://backbonefu.com/2011/08/filtering-a-collection-in-backbone-js/

在 Backbone 渲染方法中调用 jQuery 插件

4

2 回答 2

30

这只是一种常见做法,因此您可以调用render()并链接另一个方法调用。

View不会在页面中插入其 HTML 内容是一种常见的模式,并且这项工作是由首先实例化View的实例完成的。

那么你必须在实例化视图的代码中编写如下内容:

var myView = new MyView({ model: myModel });
myView.render();
$(myDOMElement).html( myView.el );

但是如果render()返回 View 本身,你可以像这样编写上面的代码:

var myView = new MyView({ model: myModel });
$(myDOMElement).html( myView.render().el );
于 2012-06-30T14:37:38.717 回答
8

返回的意思this,是为了提供链接的可能性

例如,让我们假设:

 var obj = {
      prop1 : 0,
      method1 : function(){
      },
      method2 : function(){
      }
 };
 //Then you could do something like:
 obj.method1();
 obj.method2();
 obj.prop1 = 1;

obj您需要单独执行所有操作。

现在考虑:

 var obj = {
      prop1 : 0,
      method1 : function(){
          return this;
      },
      method2 : function(){
          return this;
      }
 };
 //Now you could do these
 obj.method1().prop1 = 1;
 obj.method1().method2().method1();
于 2012-06-30T14:39:10.230 回答