gpt4 book ai didi

javascript - 替代 arguments.callee

转载 作者:数据小太阳 更新时间:2023-10-29 04:08:11 24 4
gpt4 key购买 nike

我有一个 EventListener 可以监听整个文档并记录击键,但我想在满足某些条件时删除此监听器。

以下是我的代码片段:

document.addEventListener('keyup', function(e) {
var letter_entered = String.fromCharCode(e.keyCode).toLowerCase();
player.makeGuess(letter_entered);

if(player.win_status === true || player.lose_status === true) {
document.removeEventListener('keyup', arguments.callee, false);
}
});

这有效,但是根据 Mozilla Developer Docs此方法已被弃用。

我知道我可以简单地命名该函数,但是是否有其他方法可以让我继续使用未命名的函数

最佳答案

使用以下过程:

  • 创建一个变量
  • 为变量分配一个匿名函数
  • 用变量引用调用它
  • 匿名函数使用变量名引用自身

这样使用它:

   var foo = function(e)
{
"use strict";
console.log(e);
document.removeEventListener('keyup', foo, false);
}

document.addEventListener('keyup', foo);

您可以使用 y 组合器轻松解决此问题:

function y(f) {
return function () {
return f.bind(null, y(f)).apply(this, arguments);
};
}

现在您可以按如下方式重写代码:

document.addEventListener("keyup", y(function (callee, e) {
player.makeGuess(String.fromCharCode(e.keyCode).toLowerCase());
if (player.win_status || player.lose_status) document
.removeEventListener("keyup", callee);
}));

这就是所有人。

关于javascript - 替代 arguments.callee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19214977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com