如何通过.bind(this)创建绑定函数的参数?

时间:2016-07-04 16:08:15

标签: javascript object bind addeventlistener

我添加了一个指向当前对象方法的事件侦听器。因为this的上下文丢失了,所以我将该方法绑定了。根据我的理解,.bind(this) creates a new bound function,这意味着删除事件监听器,我必须将绑定函数保留在变量中以备将来使用。

MyObject.prototype.addListener = function () {
    var checkAnchorBound = this.checkAnchor.bind(this);
    //anAnchorElement points to an anchor tag on the page
    this.anAnchorElement.addEventListener("click", checkAnchorBound);
}

现在,每当我点击那个锚点,checkAnchor就会运行,一切运行完美。问题是删除事件侦听器,因为需要在this.removeListener调用this.checkAnchor内删除该事件侦听器。这意味着我无法将绑定函数作为参数传递。

MyObject.prototype.removeListener = function (event) {
    //I cannot pass checkAnchorBound from MyObject.addListener as parameter
    this.anAnchorElement.removeEventListener("click", checkAnchorBound);
}

我尝试在对象中存储checkAnchorBound,因此我不必将变量作为参数传递:

MyObject.prototype.addListener = function () {
    this.checkAnchorBound = this.checkAnchor.bind(this);
    //anAnchorElement points to an anchor tag on the page
    this.anAnchorElement.addEventListener("click", this.checkAnchorBound);
}

但是,addEventListener不再有效。有没有办法将checkAnchorBound作为参数传递,即使我的侦听器是绑定函数?如果没有,有没有办法可以将绑定函数存储在MyObject

0 个答案:

没有答案