我有一个关于维护对象范围的一般性问题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
所以当我进一步深入范围时,我有一个参考。但我觉得这不是最好的方法......有人可以提出更好的选择吗?