举个例子,用jQuery
$('#test').on('click', ()=>{
console.log(this) // window
});
那我要怎么获取外部和内部的this?除了将箭头函数换成原来的function就没有其他方法了吗?
举个例子,用jQuery
$('#test').on('click', ()=>{
console.log(this) // window
});
那我要怎么获取外部和内部的this?除了将箭头函数换成原来的function就没有其他方法了吗?
在我理解来看,箭头函数是在想保留当前this的引用而用的。
简单举例:
document.body.addEventListener('click',function(){
// 想在1s后改变一下背景色
// 错误示范
setTimeout(function(){
// 如果使用匿名函数的话,this就不再指向body元素了
this.style.backgroundColor = 'red';
},1000);
// 所以为了保留原来this的引用,我应该用箭头函数
// 正确写法
setTimeout(()=>{
// 这时候this还是指向body
this.style.backgroundColor = 'red';
},1000);
});
所以啊,绑定事件什么的,就用匿名函数吧。
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
阮一峰es6中说到,箭头函数中没有自己的this:
官方也有说明:
所有箭头函数通过call或者apply调用时传this也是没有效果的