有谁知道在以 OO 方式使用 JavaScript 时避免声明 var self = this 的方法吗?我经常看到它并且很好奇它是否只是您必须做的事情,或者是否真的有一种方法(也许是类库?)可以让您绕过它?我确实意识到为什么有必要(这具有功能范围)。但是您永远不知道那里可能有什么聪明的方法..
例如,我通常在 JS 中这样编写我的“类”:
function MyClass() {
}
MyClass.prototype = {
firstFunction: function() {
var self = this;
$.ajax({
...
success: function() {
self.someFunctionCall();
}
});
},
secondFunction: function() {
var self = this;
window.setTimeout(function() {
self.someOtherFunction();
}, 1000);
}
};
最佳答案
在您的第一个函数中,您可以这样做...
$.ajax({
context: this,
success: function() {
this.someFunctionCall();
}
});
在第二个中,您可以执行此操作,但您需要填充 .bind()
在旧版浏览器中...
window.setTimeout(function() {
this.someOtherFunction();
}.bind(this), 1000);
使用 jQuery,您也可以这样做...
window.setTimeout($.proxy(function() {
this.someOtherFunction();
}, this), 1000);
关于javascript - OO JavaScript - 避免 self = this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641504/