1

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

4

1 回答 1

2

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

$(window).resize(function() { tableUtil.notifyObservers(); });
于 2013-08-02T18:04:42.997 回答