2010-08-12 28 views
1

以下是FF Extension监视浏览行为的代码。 从processClick方法处理点击事件不能访问trim方法。无法从使用`this`的事件处理程序中访问对象的方法

控制台显示this.trim不是功能。 我知道这可能是this的范围。

我会很感激任何帮助。

function bbm(doc) 
{ 
    this.doc = doc; 

    this.registerListeners = function() { 
     this.doc.addEventListener("click", this.processClick, false); 
    }; 

    this.trim = function(str) 
    { 
     return str.replace(/^\s+|\s+$/g, '') ; 
    }; 


    this.processClick = function(e) { 
     alert(e.type + " " + this.trim(this.url)); 
    }; 

}; 
+1

见http://stackoverflow.com/questions/1338599/addeventlistener-this – 2010-08-12 09:36:14

回答

0

使用此功能

Function.prototype.bind = function(obj) { 
    var _method = this; 
    return function() { 
     return _method.apply(obj, arguments); 
    };  
} 

然后,

this.registerListeners = function() { 
    this.doc.addEventListener("click", this.processClick.bind(this), false); 
}; 
+0

非常感谢它完美的作品。 – raptorek 2010-08-14 11:03:08

相关问题