JavaScript:onresize-won';我找不到我的手表
下面的代码工作正常,但如果我将一个方法与onresize事件一起使用,则不会JavaScript:onresize-won';我找不到我的手表,javascript,jquery,Javascript,Jquery,下面的代码工作正常,但如果我将一个方法与onresize事件一起使用,则不会 function TableUtil() { this.observers = [], this.addObserver = function(tableSelector) { this.observers.push(tableSelector); }, this.notifyObservers = function() { console.log('
function TableUtil() {
this.observers = [],
this.addObserver = function(tableSelector) {
this.observers.push(tableSelector);
},
this.notifyObservers = function() {
console.log('notify observers invoked');
for (var i in this.observers) {
this.resize(this.observers[i]);
}
},
// ...
var tableUtil = new TableUtil();
tableUtil.notifyObservators()由以下行调用:
$(window).resize(tableUtil.notifyObservers);
但是从不调用调整大小(…)
。如果我手动调用tableUtil.notifyObservators()
,它就会工作
问题是observer
数组是空的,但如果我在控制台中进行检查,则不是空的
我已经尝试过使用jQuery和不使用jQuery的变体。该问题在所有浏览器中都存在。当您将
notifyObservators
引用传递给resize()
函数时,对象引用丢失,因此在notifyObservators中,此
指向其他内容。请尝试以下方法:
$(window).resize(function() { tableUtil.notifyObservers(); });
另一种方法是使用
var self=this在TableUtil
构造函数中,使用self
,其中使用此
。