是否可以确定JavaScript对象的类型?
有关更多背景信息,请参阅以下示例:
var Cat = function() {this.numEyes=2;this.numLegs=4};
var c = new Cat();
我们如何确定c的类型。
我不是在寻找
(c instanceof Cat)
基本上我如何获得给出c的字符串Cat。
答案 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”。