0

我正在使用Object.create()创建新原型,并且我想检查用于对象的构造函数。

OBJECT.constructor 只返回继承的原型:

var mytype = function mytype() {}
mytype.prototype = Object.create( Object.prototype, { } );
//Returns "Object", where I would like to get "mytype"
console.log( ( new mytype ).constructor.name );

如何做到这一点(不使用任何外部库)?

(我的最终目标是创建从 Object 派生的新类型,并能够在运行时检查实例化对象的类型)。

4

1 回答 1

1
var mytype = function mytype() {}
mytype.prototype = Object.create( Object.prototype, { } );

将新对象分配给后mytype.prototypemytype.prototype.constructor属性被覆盖Object.prototype.constructor所以你必须改mytype.prototype.constructormytype

mytype.prototype.constructor = mytype;

它恢复.constructor您覆盖的原始原型对象上的属性。您应该恢复它,因为它应该在那里。

//Returns "Object", where I would like to get "mytype"
console.log( ( new mytype ).constructor.name );
于 2013-08-22T08:13:09.990 回答