我想从函数本身获取函数名。
Javascript:
Cube : {
profile : {
edit : function(){
// Get function Path Cube.edit Here
alert(arguments.callee.name); // Not Working
}
}
}
我想从函数本身获取函数名。
Javascript:
Cube : {
profile : {
edit : function(){
// Get function Path Cube.edit Here
alert(arguments.callee.name); // Not Working
}
}
}
您的代码片段中的函数没有名称,它是匿名的。分配给它的属性profile
有一个名称 ( edit
),但函数没有。不,没有办法从函数对象中获取edit
或profile.edit
获取。Cube.profile.edit
您可以为函数命名:
Cube : {
profile: {
edit : function edit(){
alert(arguments.callee.name);
}
}
}
...但这是使用命名函数表达式,它将在 IE8 和更早版本上创建两个单独的函数对象。
你也可以这样做:
Cube : {
profile: {
edit : Cube_profile_edit
}
}
// ...
function Cube_profile_edit(){
alert(arguments.callee.name);
}
但是,在所有上述情况中,存在两个问题:
您正在使用它在许多浏览器上都非常慢,并且在严格模式下arguments.callee
无效。
函数对象的name
属性是非标准的,这就是为什么这个答案谈到可能必须解析Function#toString
. 问题是,Function#toString
它也是非标准的(但得到了相当广泛的支持,除了在移动浏览器上)。
您可以通过在对象图中搜索引用该函数的属性来避免第二个问题Cube
,但这仍然需要使用arguments.callee
(除非您给函数一个真实名称,然后在搜索时使用该真实名称来查找属性路径导致它)。