首页 > 不太理解的小小代码

不太理解的小小代码

  本人都是自学的,感觉比较吃力,下面有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)

【热门文章】
【热门文章】