我有一个关于维护对象范围的一般性问题this。这是一个简化的代码片段。记var that = this下我调用的事件处理程序的行和内部that.showMenu()。
var MyObj = {
init : function(target){
this.$Target = $(target);
this.$Menu = $(target).find('.menu');
this.eventBindings();
},
eventBindings : function(){
var that = this;
this.$Target.on('click', '.anchor', function(e){
e.preventDefault();
that.showMenu();
//some other code
});
},
showMenu : function(){
this.$Menu.show();
}
};
MyObj.init('.myTarget')
代码应该是不言自明的。通常我会尝试在我的eventBindings(). 我不断遇到的问题是通过this它将引用到MyObj事件处理程序中,以便我可以调用this.showMenu().
为了克服这个障碍,我总是分配this给一个名为的变量,that所以当我进一步深入范围时,我有一个参考。但我觉得这不是最好的方法......有人可以提出更好的选择吗?