是否可以在backbone.js视图中使用全局变量?

是否可以在backbone.js视图中使用全局变量?,backbone.js,Backbone.js,是否可以在backbone.js视图中使用全局变量 例如: var TodoView = Backbone.View.extend({ counter: null ; // is this possible ? initialize: function(){ this.render(); }, render: function(){ } }); 您可以轻松地将变量存储在至少3个不同的范围中: 每个视图实例唯一的常规实例变量 这些可以作为属性存储在视图的thi

是否可以在backbone.js视图中使用全局变量

例如:

var TodoView = Backbone.View.extend({

 counter: null ; // is this possible ?

 initialize: function(){ 

 this.render();

 },

 render: function(){



}


});

您可以轻松地将变量存储在至少3个不同的范围中:

  • 每个视图实例唯一的常规实例变量
    • 这些可以作为属性存储在视图的
      this
      对象上
    • 示例:
      this.selectedItem=this.$el.find('.selected')
  • 视图的所有实例共享的类级变量
    • 这些可以存储在视图类的构造函数中
    • 示例:
      TodoView.counter=0(将其放在整个
      .extend
      调用之后)
  • 真正的全局变量(是的,这些是不好的,但是既然你问了)
    • 您可以通过省略
      var
      或只显式分配给
      窗口
      对象来泄漏这些
    • 示例:
      window.appLaunchTime=new Date()

除了Peter已经说过的内容外,如果您对在您创建的
的所有实例中都可以使用的私有变量感兴趣,那么您可以执行以下操作

(function () {
  var counter = 0; //This can be used now as a private variable inside TodoView

  window.TodoView = Backbone.View.extend({

    initialize: function(){ 
      this.render();
      counter += 1;
    },

    render: function(){
    }
  });
})();

试着把它放在静态范围内

var TodoView = Backbone.View.extend({
TodoView.counter++//reference it this way
},{
 counter: null ;})

可能有点像一个全局变量

,它将是一个实例变量,一个特定的视图实例,而不是视图的所有实例的全局变量。除了@asawyer提到的,这是无效的JavaScript语法,它需要是
counter:null,
Thany you guy,是的,我现在看到了(;是问题之一),我是OOP新手,所以我不知道所有的术语。非常感谢你(对不起,我的英语和javascript知识我都不懂。)window.xxx在backbone.js中不工作。有什么想法吗??(xxx是一个变量名)