问题描述
我们平时都用箭头函数来获得原来的this,但是反过来,如果js原生dom操作,比如onclick如果用箭头函数如何拿到它的this。
问题出现的环境背景及自己尝试过哪些方法
原生操作dom
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
不用箭头函数正确的做法
for (let i = 0; i < iconPlus.length; i++) {
iconPlus[i].onclick = function () {
//this指向正确
clickInitModal(this);
}
}
用箭头函数的做法会找不到this
问题如果用箭头函数 如何获取this?
for (let i = 0; i < iconPlus.length; i++) {
iconPlus[i].onclick = function () {
//this指向正确
clickInitModal(this);
}
}
我期待的结果。
如果用箭头函数 如何获取它的点击事件this
箭头函数并不是万能的。
因为用箭头函数去触发一个函数,当回调发生时,浏览器会用iconPlus[i]的上下文去调用这个函数,这时this的指向是window。
解决的办法,就是用回传统的函数表达式,这也并没有什么不好的。并不是新的模式出来,就一定要抛弃老的。