扫码关注官方订阅号
http://jsbin.com/werexoxeqe/e... 为什么使用addEvent或者attachEvent绑定的函数会自执行?直接使用onclick绑定的事件不会执行??
认证0级讲师
call会立即执行,用bind就ok了。改成这样咯
call
bind
addEvent(document.querySelector('.icon-bofang'),'click',xxx.bind(obj)) document.querySelector('.icon-bofang').onclick = xxx.bind(obj)
首先,addEvent这是一个人为封装的方法:
然后你调用了这个方法
addEvent(document.querySelector('.icon-bofang'),'click',xxx.call(obj))
这个方法实际上做的事是:
ele["on"+event]=fn;
也就是
document.querySelector('.icon-bofang').onclick=xxx.call(obj);
这不就直接执行了么?更简单一点,你直接试试这句:
document.querySelector('.icon-bofang').onclick=console.log('我立马就执行了');
看出来了么?下面这句外面套了个匿名函数,而匿名函数没有被立即执行!
document.querySelector('.icon-bofang').onclick=function(){ console.log('哥点击后才执行'); }
OVER~
**
addEvent(document.querySelector('.icon-bofang'), 'click', function() { xxx.call(obj); });
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
call会立即执行,用bind就ok了。改成这样咯首先,addEvent这是一个人为封装的方法:
然后你调用了这个方法
这个方法实际上做的事是:
也就是
这不就直接执行了么?
更简单一点,你直接试试这句:
看出来了么?
下面这句外面套了个匿名函数,而匿名函数没有被立即执行!
OVER~
**
所以你传入方法参数应该这样:
**