无法使用`this`从事件处理程序中访问对象的方法

时间:2010-08-12 09:25:18

标签: javascript firefox-addon

以下是我的FF扩展监控浏览行为代码。 我无法从处理点击事件的trim方法访问processClick方法。

控制台显示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 个答案:

答案 0 :(得分: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);
};