假定以下程序:

var SomeConstructor = function() { };
var instance = = new SomeConstructor ();

表达式instance instanceof SomeConstructor产生True,因此instance必须以某种方式知道它是由函数SomeConstructor构造的。有没有办法直接从SomeConstructor检索名称instance

(在手头的问题中,我有一个原型(prototype)层次结构,在我的应用程序中实现可能的信号。我必须访问一个信号类型,该类型应等同于用于创建该信号的构造函数。)

最佳答案

在Chrome(7.0.544.0开发人员)上,如果我这样做:

function SomeConstructor() { }

var instance = new SomeConstructor();

console.log(instance.constructor.name);

它会打印'SomeConstructor'...但是如果您将SomeConstructor定义为未命名函数,它将打印一个空字符串。

如果我打印instance.constructor,则它打印的内容与如果在您拥有的代码中打印SomeConstructor时的打印内容相同。 instanceof运算符仅需要比较这两个值,以查看它们是否等于可以返回true

07-25 22:00