对于Javascript对象,是否有等效的python的__name__

时间:2011-08-11 06:07:29

标签: javascript metaprogramming

如何在javascript中找到对象名称的字符串形式?

3 个答案:

答案 0 :(得分:5)

function bar(){};
console.log(bar.name);

//打印'bar'

这仅适用于函数,不适用于任何其他类型的对象。

对于CoffeeScript类,您可以执行此操作

class Foo
f = new Foo
console.log f.constructor.name
#Prints 'Foo'

答案 1 :(得分:1)

如果使用function foo() {…}定义了某个功能,则可以使用foo.toString()获取其名称。例如:

> window.alert.toString()
"function alert() { [native code] }"

但是,如果函数是匿名定义的(例如,var foo = function() {…}),那么就无法获得名称foo

修改:事实证明可以通过.name访问该名称(请参阅Peter Lyons的回答),因此使用.toString()会很愚蠢(虽然我会留下我的回答这里,因为它可能是有益的。)

答案 2 :(得分:1)

function A() {};
var a = new A();
a.constructor.name // => "A"