想象一下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
> ""

09-25 16:44
查看更多