gpt4 book ai didi

javascript - 在外部触发的事件中使用原始 `this`

转载 作者:行者123 更新时间:2023-11-30 10:48:55 26 4
gpt4 key购买 nike

这在代码中会更好地解释:

var FileResourceManager = {
LoadRequiredFiles: function (config) {
config = config || {};

this.OnLoading = config.onLoadingCallback;
this.OnComplete = config.onCompleteCallback;

//this works fine here.
if (this.OnLoading) {
this.OnLoading();
}

Modernizr.load([{
load: 'somefile.js',
complete: function () {
//Error in this callback here.
if (this.OnComplete) {
this.OnComplete();
}
}
});
}

};
FileResourceManager.LoadRequiredFiles({
onLoadingCallback: function () {
alert('started');
},
onCompleteCallback: function () {
alert('complete');
}
});

如您所见,在 Modernizr.load 的 complete 事件的回调中,我想调用父/外部对象的方法。但是 this 实际上变成了 Modernizr 对象。如何在事件中访问外部对象的属性?

我在 backbone.js 中看到过这样做项目,通过使用某种形式的绑定(bind)。我不确定我是否需要写这样的东西。

最佳答案

var self = this;

Modernizr.load([{
load: 'somefile.js',
complete: function () {
//Error in this callback here.
if (self.OnComplete) {
self.OnComplete();
}
}
});

关于javascript - 在外部触发的事件中使用原始 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6645972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com