搜索函数名称(Javascript)

时间:2017-01-19 10:35:21

标签: javascript

美好的一天,

是否有arguments.callee.toString().match的替代方法可以找到函数名称?就像使用循环来创建另一个函数来搜索名称一样。

我的所有功能都命名为:

function mthdSearch() {
    console.log("test0")
};

function funkA() {
    console.log("test1");
}


function funkB() {
    console.log("test2");
}

1 个答案:

答案 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)。