通常(如果不总是),当 jQuery 允许您向某些 JS 事件(如 click)添加回调时,在回调函数中,它们会将“含义”更改为this
触发事件的 DOM 元素。
这可能非常有用,但是当您在 js 中编写 OOP 代码时,它会妨碍您,例如以下示例:
function MyClass() {}
MyClass.prototype = {
init: function() {
$("#someSpan").click(this.doSomething);
},
doSomething: function() {
alert("Here 1");
this.test();
return false;
},
test: function() {
alert("Here 2");
}
}
在这个例子中,this.test()
将不起作用,因为this
不再是一个实例,MyClass
而是一个 jQuery DOM 元素(跨度)。
我的问题是:有没有办法继续使用这种模式在 JS 中编写 OOP 代码并使用 jQuery?this
并且:当 jQuery 可以轻松地将 jQuery DOM 元素作为第一个参数发送时,为什么它会在回调函数中发生变化?