JavaScript:onresize将找不到我的观察者数组

时间:2013-08-02 17:59:30

标签: javascript jquery

以下代码工作正常,但如果我将方法与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的变体。所有浏览器都存在此问题。

1 个答案:

答案 0 :(得分:2)

当您将notifyObservers引用传递给resize()函数时,对象引用将丢失,因此notifyObservers this内部指向其他内容。试试这个:

$(window).resize(function() { tableUtil.notifyObservers(); });