2013-12-11 117 views
0

是否可以確定JavaScript對象的類型?確定JavaScript對象實例的類型

請參閱下面的背景下,例如:

var Cat = function() {this.numEyes=2;this.numLegs=4}; 
var c = new Cat(); 

我們如何確定C的類型。

我不是在尋找

(c instanceof Cat) 

我本質上是如何會得到給定的C弦貓。

+1

請。 var Cat =函數。 –

+0

dup http://stackoverflow.com/questions/332422/how-do-i-get-the-name-of-an-objects-type-in​​-javascript – georg

回答

0

original post formulation在修訂歷史仍清晰可見,Cat未經var定義,即:

Cat = function() {this.numEyes=2;this.numLegs=4}; 

在這種情況下,可以通過遍歷全局對象的屬性來確定構造函數的名稱(瀏覽器的window S)。

Cat = function() {this.numEyes=2;this.numLegs=4}; 
var c = new Cat(); 
alert(typeNameOf(c)); 

function typeNameOf(c) { 
    for (name in window) { 
     if (window[name] == Object.getPrototypeOf(c).constructor) return name; 
    } 
} 

這應該提醒所有現代瀏覽器中的「貓」。

+0

這就是我正在尋找的。謝謝。 – user3091138

+0

@ user3091138不客氣 –

0

我想你是在構造函數名稱之後而不是類型。問題在於你定義它的方式不起作用。

var Cat = function(){}; 
var c = new Cat(); 
console.log(c.constructor.name); //"" 

如果你命名你的函數,你可以得到名稱

var Dog = function Dog(){}; 
var d = new Dog(); 
console.log(d.constructor.name); //Dog 
+0

作爲一個說明,這不適用於IE(no 'name'屬性支持)。 –