作用域事件处理程序的JavaScript最佳实践

作用域事件处理程序的JavaScript最佳实践,javascript,events,scoping,Javascript,Events,Scoping,我是一名Flash开发者,后来成为UX开发者。在命名空间对象或类中编写事件处理程序函数时,我试图找出最佳做法是什么 我不喜欢看到一些添加嵌套处理程序的大型init函数。它很难阅读,而且很凌乱。我认为事情应该更进一步 我使用jQuery就是这样做的,但是有更好的、更被接受的方法吗 var myNamespace = { init: function() { var self = this; $('#button').click( function(event) {

我是一名Flash开发者,后来成为UX开发者。在命名空间对象或类中编写事件处理程序函数时,我试图找出最佳做法是什么

我不喜欢看到一些添加嵌套处理程序的大型init函数。它很难阅读,而且很凌乱。我认为事情应该更进一步

我使用jQuery就是这样做的,但是有更好的、更被接受的方法吗

var myNamespace = {

   init: function() {

      var self = this;
      $('#button').click( function(event) { self.onClick(event); } );

   },

   onClick: function(event) {
      // do something
   }

};

如果您正在开发一个新项目,我向您推荐主干网,它有一个添加事件的好方法:

var DocumentRow = Backbone.View.extend({
    tagName: "li",
    className: "document-row",

    events: {
        "click .icon":          "open",
        "click .button.edit":   "openEditDialog",
        "click .button.delete": "destroy"
    },

    render: function() {
        ...
    },

    open: function() {
        // listener...
    }
});

我建议您浏览一下Angular.js或Ember.js。这些框架按照MV*方法为您回答了这个问题。