假设对象a
var a = {
name:'jmx',
getNum:function () {
console.log(this.name);
},
addListen:function (elements) {
var that = this;
elements.addEventListener('click',that.getNum);
}
}
利用a.addListen(某element)给某元素添加click监听
当该元素被点击时,console.log的结果是undefined
这是为什么?因为addEventListener的事件函数默认是作为调用addEventListener对象的方法,所以调用的时候指向elements元素对象。
为了解决这个问题,可以用bind方法指定this值
var a = {
name:'jmx',
getNum:function () {
console.log(this.name);
},
addListen:function (elements) {
var that = this;
elements.addEventListener('click',that.getNum.bind(that));
}
}
现在会输出‘jmx’了。