要在 Javascript 中修改此关键字

To modify this keyword in Javascript

如何用原来的调用对象替换this?我知道这是一种简化的呈现方式,但我试图理解 this 所引用的对象。

for(var i=0; i<list.length; i++){
 list[i].addEventListener("click", liClick);
}

function liClick(){
  this.classList.toggle("done");
}

我的理解是this指的是被点击的list[i],但是当我尝试用

function liClick(){
  list[i].classList.toggle("done");
}

写错了,怎么修改?谢谢。

this 关键字未引用列表项。

您应该将 list[i] 传递给函数

函数列表点击接收事件可以直接访问e.target或者做回调函数传item

for(var i=0; i<list.length; i++){
 list[i].addEventListener("click", () => liClick(list[i]) );
}

const liClick = (listItem) => {
  listItem.classList.toggle("done");
}

你可以这样做:

for (var i = 0; i < list.length; i++) {
  list[i].addEventListener("click", liClick);
}

function liClick(e) {
  e.target.classList.toggle("done");
}