我使用的是Chrome v22.0.1229.94 m,而不是它应该重要,但以防万一: - )
便携性与我无关。只要它适用于Chrome(和Safari),我很高兴。
我有两个函数,foo和bar:
var foo = function() {
...
}
function bar() {
...
}
然后如果我使用它们创建对象:
f1 = new foo();
b1 = new bar();
我可以获取bar的构造函数名称,但也不能获取foo:
> f1.constructor.name ==> ""
> b1.constructor.name ==> "bar"
然而在这两种情况下,当我检查变量 f1 和 b1 时,DevTools控制台将显示名称“foo”和“bar”。
如何为 f1 提取名称 foo ,因为DevTools能够?
答案 0 :(得分:6)
V8可以在解析阶段执行函数名称推断,通过其API公开此信息。您将无法使用普通对象属性提取此信息。
答案 1 :(得分:1)
对于foo
,您正在创建函数表达式。这意味着,您正在为变量分配匿名函数。
除非为函数命名并创建“命名函数表达式”,否则无法以编程方式解析函数name
。
var foo = function foo() {
...
}