84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
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); });
call
会立即执行,用bind
就ok了。改成这样咯首先,addEvent这是一个人为封装的方法:
然后你调用了这个方法
这个方法实际上做的事是:
也就是
这不就直接执行了么?
更简单一点,你直接试试这句:
看出来了么?
下面这句外面套了个匿名函数,而匿名函数没有被立即执行!
OVER~
**
所以你传入方法参数应该这样:
**