我有一个类:
function RustEditor() {
this.init = function() {
var saveButton = this.container.find("button.saveButton");
saveButton.click(function(){this.save();});
};
...
当我点击按钮时,它会提示 this.save 不是一个函数。这是因为这里的“this”不是指 RustEditor 的实例,而是指按钮。我可以在回调闭包中使用什么变量来指向 RustEditor 的实例?我可以使用 rust.editor(它是全局范围内的名称),但那是难闻的代码。
最佳答案
通常的做法是将 this
值括起来,如下所示:
function RustEditor() {
this.init = function() {
var self = this;
var saveButton = this.container.find("button.saveButton");
saveButton.click(function(){self.save();});
};
根据 tvanfosson 的建议更新:
this
在事件处理程序被调用时得到反弹,因此您需要在创建对象时使用一个变量捕获对该类的引用,该变量将在闭包中保留该引用。
关于javascript - 在 jQuery 按钮回调中获取正确的 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128063/