我在以下代码中遇到了非常有趣的问题:
这有效(proxyLoginSuccess 中的某些内容会引发错误,因为我认为它脱离了上下文):
this.model.save()
.done(this.proxyLoginSuccess)
但这不是
this.model.save()
.done(function() {
this.proxyLoginSuccess();
})
代理登录成功是:
this.proxyLoginSuccess = options.loginSuccess;
我在这里遇到上下文问题,不知道如何解决这个问题,感谢任何线索吗?
最佳答案
您可以使用下划线指定函数运行的上下文,
this.model.save()
.done(_.bind(function() {
this.proxyLoginSuccess();
}, this));
或者使用 jQuery,
this.model.save()
.done(Backbone.$.proxy(function() {
this.proxyLoginSuccess();
}, this));
或者通过保留对本地范围的引用,
var self = this;
this.model.save()
.done(function() {
self.proxyLoginSuccess();
});
或者 native ( MDN Polyfill for older browsers ),
this.model.save()
.done(function() {
this.proxyLoginSuccess();
}.bind(this));
可能还有更多方法,但我更喜欢第一个选项。
关于javascript - javascript 中的函数上下文问题 - 主干,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288010/