这是我的代码,现在有些人可能会说为什么不在这个功能块中包含一行代码,但我不想,我该如何实现。如何调用this.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);
答案 0 :(得分:1)
改变这个:
me.el.addEventListener("click", me.click, false);//....
到此:
me.el.addEventListener("click", me.click.bind(me), false);//....
当您仅传递me.click
时,您只是传递对click
函数的引用,并且对me
的绑定将丢失。 .bind()
将创建一个自绑定存根函数,在调用事件处理程序时将为您提供正确的this
值。