Javascript 在下面的代码中,这个对象如何在addEventListener方法上工作?
看 我有以下Html代码:Javascript 在下面的代码中,这个对象如何在addEventListener方法上工作?,javascript,this,dom-events,Javascript,This,Dom Events,看 我有以下Html代码: <table id="outside"> <tr><td id="t1">one</td></tr> <tr><td id="t2">two</td></tr> </table> 执行Something(),此引用窗口对象。所以onclick1和onclick2是Windo
<table id="outside">
<tr><td id="t1">one</td></tr>
<tr><td id="t2">two</td></tr>
</table>
执行Something()
,此
引用窗口
对象。所以onclick1
和onclick2
是Window
对象上的方法
怀疑:
el.addEventListener('click',this.onclick1,false)时代码>在this中执行this
对象。单击1
引用el
对象。那么,当触发事件时,为什么调用onclick1
方法(这是window
对象的方法)。onclick1
方法应该调用window
对象,而不是el
对象
onclick2.bind(this)
中的this
对象有何不同此示例取自事件处理程序将事件目标的元素作为
This
对象传递
Function.bind()
强制被调用函数的this
对象成为特定对象,即要绑定的参数
如果在创建处理程序函数时未使用fn.bind(thisObject)
覆盖此
,则它将默认为事件目标(如问题中的MDN链接所述)。如果这样做,它将是您指定为.bind()
参数的任何对象
有关.bind()
的其他信息:
var el = document.getElementById("outside");
var Something = function(element) {
this.name = 'Something Good';
this.onclick1 = function(event) {
console.log(this.name); // undefined, as this is the element
};
this.onclick2 = function(event) {
console.log(this.name); // 'Something Good'
};
el.addEventListener('click', this.onclick1, false);
el.addEventListener('click', this.onclick2.bind(this), false);
}
Something();