确定javascript对象实例的类型

时间:2013-12-11 13:01:28

标签: javascript

是否可以确定JavaScript对象的类型?

有关更多背景信息,请参阅以下示例:

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

我们如何确定c的类型。

我不是在寻找

(c instanceof Cat)

基本上我如何获得给出c的字符串Cat。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在修订历史中仍然可见的original post formulation中,Cat的定义没有var,即:

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

在这种情况下,可以通过迭代全局对象的属性(浏览器的window)来确定构造函数的名称。

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;
    }
}

这应该在所有现代浏览器中警告“Cat”。