js中addEventListener注册事件用removeEventListener解绑注意事项

注册DOM事件的一种方式:addEventListener


document.addEventListener('mousemove', function() {
	console.log('执行');
});

上述事件绑定,我们是不能通过使用removeEventListener来将其解绑,因为addEventListener的第二个参数是一个匿名函数,所以removeEventListener的第二个参数是获取不到与其同名的函数;要想解绑addEventListener绑定的事件,可以通过下面实现:


function excute() {
	console.log('执行');
}
document.addEventListener('mousemove', excute); // 绑定
document.removeEventListener('mousemove', excute); // 解绑

注意事项: 我们在使用的函数中是通过bind绑定的,那么我们在addEventListener的第二个参数需要注意写法:

let obj = {};
function excute() {
	console.log('执行');
}
document.addEventListener('mousemove', excute.bind(obj)); // 绑定
document.removeEventListener('mousemove', excute); // 解绑

上面的写法是不能解绑事件,因为excute.bind(obj)是返回一个新的函数(bind的显示绑定实现就是返回一个新的函数),我们可以称之为其为匿名函数,那么解绑时候,我们拿不到相同函数名,所以不能解绑,故通过下面方式解绑:

let obj = {};
function excute() {
	console.log('执行');
}
const fn = excute.bind(obj);
document.addEventListener('mousemove', fn); // 绑定
document.removeEventListener('mousemove', fn); // 解绑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值