箭头函数中的此关键字绑定问题 [Duplicate]

this keyword binding issue in arrow function [duplicate]

提问人:C Modi 提问时间:9/11/2020 更新时间:9/11/2020 访问量:45

问:

我正在研究一个带有单击事件侦听器到箭头函数的 javascript bind 关键字的测试用例并使用关键字添加类,我试图绑定我的函数,但每次关键字都指向窗口对象,我想指向事件对象。thisthisthis

这是我的代码。

const cards = document.querySelectorAll(".card");

var isFlipped = false;
var firstCard;
var secondCard;

const flip = ( ) => {
  console.log(this);
  this.classList.add("flip");
  if (!isFlipped) {
    isFlipped = true;
    firstCard = this;
  } else {
    secondCard = this;
    console.log(firstCard);
    console.log(secondCard);
  }
}

Array.from(cards).map(card => card.addEventListener("click", flip.bind(this) ));

这是您要检查的 HTML

<div class="gameContainer">
      <div class="container">
        <h1 class="text-center text-white display-4">How is your memory</h1>
      </div>
      <div class="card" data-image="evilface">
        <img src="evilface.png" class="front flip" alt="evilface" />
        <img src="lco.png" class="back" alt="lco" />
      </div>
</div>

注意:当然,我可以将箭头功能转换为正常功能,这将按扩展方式工作,但是我想要带有箭头功能的功能。

javascript 这个 绑定 箭头函数

评论

0赞 CertainPerformance 9/11/2020
这是不可能的,因为在箭头函数中,是按词法继承的。this
0赞 C Modi 9/11/2020
是的,我知道这是遗传的,但应该有一些解决方法来解决这个问题?
0赞 CertainPerformance 9/11/2020
如果要求是使用this
0赞 John Montgomery 9/11/2020
解决方法是改用,或将作用域作为参数传入,而不是绑定它。function
1赞 Barmar 9/11/2020
你问了关键词,其他问题回答了这个问题。如果你问“我怎样才能得到被点击的元素?”,答案会有所不同。this

答: 暂无答案