JavaScript:' typeof'运算符不返回正确的classtype

时间:2015-04-13 10:04:16

标签: javascript class oop inheritance typeof

可能我犯了一个大错。目前我正在尝试声明两个类,如下所示。但在这两种情况下,' 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);




提前致谢。

3 个答案:

答案 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运算符的结果描述:

typeof return values

我认为对于了解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

访问这里
typeOf Does not return correct class type