以下代码可以正常工作,但是如果我将一个方法与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/

10-16 18:51