本人都是自学的,感觉比较吃力,下面有4点还是不太理解,忘高手指点
1、window.onload = function() {
2、 var oDiv = document.getElementById('div1');
3、 var oDiv2 = document.getElementById('div2');
4、 function change() {alert(this);}
5、 addEvent(oDiv, 'click', change);
6、 addEvent(oDiv, 'click', change);
7、 function addEvent(obj, event, fn) {
//1、什么为之程序第一次加载,是不是从第1-12行里面的代码全执行完才为之第一次?
//2、上面我调用了两次addEvent而8-9行都是执行||后面的,我以为调用第2次为之第二次
// 加载,可是不是,要怎么样他才能执行||前面的
//3、下面如果||前面的是true他返回的是怎么样的,
// 是不是obj['bindclick']=obj['bindclick']
// 如果是后面的为true就是这样obj['bindclick']={}
//4、像8-9行=号前面的对象属性能不能用普通变量代替,比如var a?
8、 obj['bind' + event] = obj['bind' + event] || {};
9、 obj['bind'+event]['bind' + fn] = obj['bind'+event]['bind' + fn] ||function() {fn.call(obj);}
10、 obj.addEventListener(event, obj['bind'+event]['bind' + fn],false);
11、 }
12、};
1、代码第一次执行就会将所有的代码执行一遍
2、你写两次addEvent
他们的拿到的参数是一样的,所以执行结果是一样的
3、你要是想要他执行||前面的 必须保证你传进来的 oDiv 这个对象存在,并且这个对象存在bindclick
属性(这里event==click)
4、你想要执行第二次,并不是写两个同时写两个addevent,因为你执行两次有变化的话必须保证你 obj['bind' + event]
是个全局变量 但是实际上他不能设置成全局变量 也就是你不能在函数的外围设置var xxx 然后在addevent中使用
5、这里的问题 主要是 你的必须保证你传进来的 oDiv 这个对象存在,并且这个对象存在
bindclick属性(这里event==click)