解决兼容性问题:定义 一个函数,用来为指定的元素绑定响应函数
obj:要绑定的事件对象
eventStr:事件的字符串
callback:回调函数
addEventListener里面的this是绑定事件的对象
attachEvent-里面的this是window
需要统一两个方法的this
function bind(obj, eventStr, callback) {
}
初步解决:不同浏览器显示不同的问题
function bind(obj, eventStr, callback) {
if(obj.addEventListener){
//大部分浏览器
obj.addEventListener(eventStr, callback, false);
}else{
//IE8及以下
obj.attachEvent("on"+eventStr, callback);
}
}
解决this指代不同的问题:
this的值是由调用方式决定的,在匿名函数中调用回调函数——
使用call方法--函数对象中有一个call()和apply()方法
function bind(obj, eventStr, callback) {
if(obj.addEventListener){
//大部分浏览器
obj.addEventListener(eventStr, callback, false);
}else{
//IE8及以下
obj.attachEvent("on"+eventStr, function(){
callback.call(obj);//this是指定的那个对象
});
}
}