定义课程的最佳方法是什么?我知道这一事实大部分时间都是您喜欢使用的选择,但这3个例子之间的直接区别是什么?
例1
var Class = (function(){
function Class() {
this.test = 'test'
}
return Class;
})();
var c = new Class();
console.log(typeof Class);
console.log(c.test);
Run Code Online (Sandbox Code Playgroud)
例2
var Class2 = function(){
this.test = 'test'
};
var c2 = new Class2();
console.log(typeof Class2);
console.log(c2.test);
Run Code Online (Sandbox Code Playgroud)
例3
function Class3(){
this.test = 'test'
};
var c3 = new Class3();
console.log(typeof Class3);
console.log(c3.test);
Run Code Online (Sandbox Code Playgroud)
有时候我也会这样使用它:var Class =(function(){var Private = {},Public = {};
Private._doSomething = function() {
// something
}
Public.doSomethingElse = function() {
// something else
}
return …
Run Code Online (Sandbox Code Playgroud) 我试图从一个元素中删除一个事件处理程序,附加jQuery on()
并删除它off()
.这通常会起作用,但在这种情况下它不起作用.
this.element.on('click', this.handler);
this.element.off('click', this.handler);
Run Code Online (Sandbox Code Playgroud)
这将工作,但在我的情况下,它不起作用,因为将范围绑定到处理程序.
this.element.on('click', this.handler.bind(this));
this.element.off('click', this.handler.bind(this));
Run Code Online (Sandbox Code Playgroud)
由于范围被绑定到处理程序,因此该off
方法无法从该元素中分离事件.
我尝试过使用引用,如下所示:
var self = this;
this.element.on('click', this.handler.bind(self));
this.element.off('click', this.handler.bind(self));
Run Code Online (Sandbox Code Playgroud)
但没有运气......任何人都有想法解决这个问题?