以下代码工作正常,但如果我将方法与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的变体。所有浏览器都存在此问题。
答案 0 :(得分:2)
当您将notifyObservers
引用传递给resize()
函数时,对象引用将丢失,因此notifyObservers this
内部指向其他内容。试试这个:
$(window).resize(function() { tableUtil.notifyObservers(); });