美好的一天,
是否有arguments.callee.toString().match
的替代方法可以找到函数名称?就像使用循环来创建另一个函数来搜索名称一样。
我的所有功能都命名为:
function mthdSearch() {
console.log("test0")
};
function funkA() {
console.log("test1");
}
function funkB() {
console.log("test2");
}
答案 0 :(得分:1)
正如我的评论所述,从一般的角度来看,这是不可能的。
您可以通过在另一个函数中声明函数 local (即在 local scope 中)构建一个计数器示例,然后尝试按范围之外的名称访问声明的函数该功能:
(function() {
function f() {console.log("f")}
var g = function g() {console.log("g");};
h = function h() {console.log("h");};
f();
g();
h();
})();
try {f();}
catch(e) {console.log(e.message);}
try {g();}
catch(e) {console.log(e.message);}
try {h();}
catch(e) {console.log(e.message);}

如您所见,只有h
可以在匿名函数范围之外访问,因为它是全局声明的(通过省略var
关键字)。
如果您正在寻找存储函数集合并按名称访问它们的技术,请使用面向对象的JavaScript 模式(MDN introduction to object oriented JavaScript)。