2013-08-22 118 views
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派生的新類型,並且能夠在運行時檢查實例化對象的類型)。

回答

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

分配一個新的對象來mytype.prototype後,mytype.prototype.constructor屬性由Object.prototype.constructor覆蓋所以你必須改變mytype.prototype.constructor回到mytype

mytype.prototype.constructor = mytype; 

它恢復了.constructor屬性,是原來的原型對象上你重寫了。你應該恢復它,因爲它預計會在那裏。

//Returns "Object", where I would like to get "mytype" 
console.log((new mytype).constructor.name); 
+0

非常感謝,我對此一無所知! – ehmicky