可能我犯了一个大错。目前我正在尝试声明两个类,如下所示。但在这两种情况下,' typeof'正在回归'对象'在JavaScript中声明一个类的正确过程是什么,因此,我们可以通过' typeof'来获取正确的类名。操作
var Furniture = function(legs){
this.legs = legs;
};
Furniture.prototype.getLegs = function(){ return this.legs; };
var Chair = function(){
Furniture.call(this, 4);
};
Chair.prototype = Object.create(Furniture.prototype);
var a = new Furniture(12);
var b = new Chair();
console.log(typeof a);
console.log(typeof b);

提前致谢。
答案 0 :(得分:2)
您必须检查instanceof
而不是typeof
。
typeof
只会为您提供对象的数据类型。
console.log(a instanceof Furniture);
console.log(b instanceof Chair);
参考 How do I get the name of an object's type in JavaScript? 上面的SO显示了查找构造函数名称的各种方法。
答案 1 :(得分:1)
这是正确的行为。 Mozilla developer network有一个有用的表格,其中包含typeof运算符的结果描述:
我认为对于了解js非常有用。 Javascript看起来像简单的语言。事实并非如此。这很棘手。
答案 2 :(得分:1)
这对你有用
var toType = function(obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}
var b = new Chair();
console.log(toType(b)); // Chair