javascript - 不太理解的小小代码
高洛峰
高洛峰 2017-04-10 15:45:08
[JavaScript讨论组]
  本人都是自学的,感觉比较吃力,下面有4点还是不太理解,忘高手指点
1、window.onload = function() {
2、    var op = document.getElementById('p1');
3、    var op2 = document.getElementById('p2');
4、    function change() {alert(this);}
5、  addEvent(op, 'click', change);
6、  addEvent(op, '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、};
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
PHPz

1、代码第一次执行就会将所有的代码执行一遍
2、你写两次addEvent 他们的拿到的参数是一样的,所以执行结果是一样的
3、你要是想要他执行||前面的 必须保证你传进来的 op 这个对象存在,并且这个对象存在bindclick属性(这里event==click)
4、你想要执行第二次,并不是写两个同时写两个addevent,因为你执行两次有变化的话必须保证你 obj['bind' + event]是个全局变量 但是实际上他不能设置成全局变量 也就是你不能在函数的外围设置var xxx 然后在addevent中使用
5、这里的问题 主要是 你的必须保证你传进来的 op 这个对象存在,并且这个对象存在bindclick属性(这里event==click)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号