在 JavaScript 中, 的值this
取决于函数的调用方式。有关详细信息,请参阅MDN 文章this
。
您的问题缺少一些细节。我的回答是假设你有这样的事情:
var MyObj = function() {
window.onresize = function(event) {
this.onBrowserResize();
}
this.onBrowserResize = function() {}
}
这是这样的实例:
var myObj = new MyObj();
以下是实现这一目标的一些方法。
1. 只需将 this.onBrowserResize作为事件处理程序传递(最简单的方法,如果您的所有 onresize 处理程序都是调用onBrowserResize
):
var MyObj = function() {
window.onresize = this.onBrowserResize;
this.onBrowserResize = function() {
// caution: "this" here won't be your object.
// use option 3 below if you need this to be your object
}
}
2.缓存对本地的引用this
:
var MyObj = function() {
var that = this;
window.onresize = function(event) {
that.onBrowserResize();
}
this.onBrowserResize = function() {}
}
3. 固定this
withFunction.prototype.bind
的值:
var MyObj = function() {
window.onresize = this.onBrowserResize.bind(this);
this.onBrowserResize = function() {}
}