вызовы вложенных функций по событию «click» в javascript

1

вот мой код. Теперь некоторые люди могут сказать, почему не просто включить код одной строки в этот функциональный блок, но я не хочу, как мне это достичь. Как я могу вызвать метод this.click "click" кнопки

 var i = 0;
function el() {
    this.type = "button",
    this.el = false,
    this.click = function () {
        this.setHtml(i++);
    },
    this.setHtml = function (t) {
        this.el.innerHTML = t;
    }
    fragment = document.createDocumentFragment(),
        element = fragment.appendChild(document.createElement(this.type));
    element.setAttribute("data-el", this.type);
    element.innerHTML = "Default Button";
    this.el = element;
    attachEvent("click", this);
}
// this should be a seperate function ....
function attachEvent(ev, me){
//me doesn't work, but i want it to call the click method
    me.el.addEventListener("click", me.click, false);//....

}


div  = new el();
document.getElementById('areaA').appendChild(div.el);
Теги:
ecmascript-6
function

1 ответ

1

Измените это:

me.el.addEventListener("click", me.click, false);//....

к этому:

me.el.addEventListener("click", me.click.bind(me), false);//....

Когда вы передаете только me.click, вы просто передаете ссылку на функцию click и привязка ко me теряется. .bind() создаст функцию self-binding stub, которая даст вам право this значение при вызове обработчика события.

  • 2
    +1 проблема в контексте функции, с помощью bind вы можете выбрать «этот» контекст, здесь ссылка на то, что является bind: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 0
    это так круто, спасибо мужик

Ещё вопросы

Сообщество Overcoder
Наверх
Меню