[英]Can a JavaScript function rename itself?
我意识到 function 可以很容易地通过编写复制到一个新变量:
var wu = function() {
// do stuff
)
var tang = wu;
var bee = tang;
// etc
通过这种方式,理论上可以使用无限多个名称 go。 我还意识到在上面的例子中,我可以说var wu = undefined
并且引用将被删除,但我想知道 function 是否可以将自己重命名为它自己的上下文的一部分? 意思是,我可以写:
function wuTang() {
// do stuff
// rename self
}
wuTang(); // runs successfully
wuTang(); // returns undefined
我不担心创建新名称的过程,我只是想知道这是否可能。 我不想调用第二个 function 来重命名原来的 function,我希望 function 重命名自己,这样它只能被给定的名称调用一次。
window.wutang = function() {
var f = window.wutang;
window.watang = f;
delete window.wutang;
}
这足以“重命名”自身:)
wutang(); // ok
wutang(); // fail
watang(); // should kill self :)
是的,有可能。 要重命名 function,您需要为其添加一个新名称,然后删除其旧名称。 例子:
function wuTang() {
newWuTang = wuTang; // Add new name (reference) to the function
wuTang = undefined; // Remove old name (reference)
}
在这种情况下,请注意newWuTang
前面没有关键字 (var,let,const,...) 是您想要的,因为根据 w3:
如果您声明一个变量,而不使用“var”,则该变量总是变为 GLOBAL。
这个 function 将只作为wuTang
运行一次,并将自己重命名为newWuTang
。
我曾经在我的 function 中使用过一些类似eval
的东西,所以我可以将新的通缉名称作为参数传递给 function。但是你知道他们对eval
的看法......那天我一定感到很疯狂!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.