假定以下程序:
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
。