想象一下JavaScript“类” Foo
:
var Foo = function()
{
};
以及该类的一个实例:
var foo = new Foo();
我可以直接从实例
Foo
获取字符串foo
,还是Foo
只是实例化后无法与实例foo
关联的传递变量?使用
foo.constructor
编辑1 SLaks suggests。这给出:function ()
{
}
如果函数以以下形式定义,则此方法有效:
function Foo()
{}
...但并非总是如此。
编辑2 尝试skizeey's approach也不起作用。从本质上讲,它是Slack方法的一种更完整的尝试,但是会产生一个空字符串:
""
编辑3 我想知道这是否确实可能。请注意来自Chrome的JavaScript控制台的以下记录:
> var Foo = function() {}
undefined
> var foo = new Foo();
undefined
> foo
Foo
在最后一行,Chrome清楚地知道该对象的类型为
Foo
。但是,这可能只是Chrome的东西,而不是标准的JavaScript,甚至是语言本身无法访问的东西。 最佳答案
具有命名功能:
> var Foo = function Foo(){};
> undefined
> var foo = new Foo();
> undefined
> foo.constructor.name
> "Foo"
具有未命名功能:
> var Foo = function (){};
> undefined
> var foo = new Foo();
> undefined
> foo.constructor.name
> ""