以下代码可以正常工作,但是如果我将一个方法与onresize事件一起使用,则无法正常工作。
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.notifyObservers()由以下行调用:
$(window).resize(tableUtil.notifyObservers);
但是永远不会调用
resize(...)
。如果我手动调用tableUtil.notifyObservers()
,它将起作用。问题是
observers
数组为空,但如果我在控制台中检入,则不是。我已经尝试了有无jQuery的变体。该问题存在于所有浏览器中。
最佳答案
当您将notifyObservers
引用传递给resize()
函数时,对象引用将丢失,因此notifyObservers this
内部指向其他内容。尝试以下方法:
$(window).resize(function() { tableUtil.notifyObservers(); });
关于javascript - JavaScript:onresize找不到我的观察者数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18023272/