提问人:Brenden Baio 提问时间:11/2/2022 最后编辑:Brenden Baio 更新时间:11/2/2022 访问量:54
在我的函数中,“this”仅指什么?
What does "this" alone refer to in my function?
问:
只是想弄清楚“updateCell”参数中的“this”在这段代码中指的是什么:
function initializeGame() {
cells.forEach(cell => cell.addEventListener("click", cellClicked))
restartBtn.addEventListener("click", restartGame);
statusText.textContent = `${currentPlayer}'s turn`;
running = true;
}
function cellClicked(){
console.log('test');
const cellIndex = this.getAttribute("cellIndex");
if(options[cellIndex] != "" || !running) {
return;
}
updateCell(this, cellIndex);
checkWinner();
}
function updateCell(cell, index) {
options[index] = currentPlayer;
cell.textContent = currentPlayer;
}
我知道只有“this”可以引用全局变量,但是没有称为“this”的全局变量,所以我对它的工作原理有点困惑。
答:
2赞
trincot
11/2/2022
#1
作为参数传递给的回调稍后将调用,并设置为绑定事件处理程序的 DOM 元素。因此,在您的代码中,这将是 .cell.addEventListener
this
cell
如果您发现使用令人困惑,可以改用以下命令:this
问题是回调是用事件对象作为参数调用的。如果您愿意,还可以使用该事件对象及其 currentTarget 属性来找出与哪个 DOM 元素有关:
function cellClicked(evt){
const cell = evt.currentTarget;
// At this point, `cell===this` is true
const cellIndex = cell.getAttribute("cellIndex");
if(options[cellIndex] != "" || !running) {
return;
}
updateCell(cell, cellIndex);
checkWinner();
}
评论
this
cellClicked