JavaScript:';类型';运算符未返回正确的类类型

JavaScript:';类型';运算符未返回正确的类类型,javascript,class,oop,inheritance,typeof,Javascript,Class,Oop,Inheritance,Typeof,也许我犯了一个巨大的错误。目前我正试图声明两个类,如下所示。但在这两种情况下,“typeof”都返回“object”。在JavaScript中声明类的正确过程是什么?这样,我们就可以通过“typeof”操作符获得正确的类名 var家具=功能(腿){ 这个。腿=腿; }; Furniture.prototype.getLegs=function(){返回this.legs;}; var Chair=函数(){ 家具。打电话(这个,4); }; Chair.prototype=Object.cre

也许我犯了一个巨大的错误。目前我正试图声明两个类,如下所示。但在这两种情况下,“typeof”都返回“object”。在JavaScript中声明类的正确过程是什么?这样,我们就可以通过“typeof”操作符获得正确的类名

var家具=功能(腿){
这个。腿=腿;
};
Furniture.prototype.getLegs=function(){返回this.legs;};
var Chair=函数(){
家具。打电话(这个,4);
};
Chair.prototype=Object.create(Furniture.prototype);
var a=新家具(12);
var b=新椅子();
控制台日志(a型);

控制台日志(类型b)
您必须检查
实例的
,而不是
类型的

typeof
将只提供对象的数据类型

console.log(a instanceof Furniture);
console.log(b instanceof Chair);
请参阅
上面显示了查找构造函数名称的各种方法。

您必须检查
instanceof
,而不是
typeof

typeof
将只提供对象的数据类型

console.log(a instanceof Furniture);
console.log(b instanceof Chair);
请参阅
上面显示了查找构造函数名称的各种方法。

这是正确的行为。具有有用的表,其中包含运算符类型的结果说明:


我认为稍微了解一下js是非常有用的。Javascript看起来像一种简单的语言。这不是真的。这是个棘手的问题。

这是正确的行为。具有有用的表,其中包含运算符类型的结果说明:

我认为稍微了解一下js是非常有用的。Javascript看起来像一种简单的语言。这不是真的。这是个棘手的问题。

这对你来说很有用

    var toType = function(obj) {
        return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
   }

var b = new Chair();

console.log(toType(b));  // Chair
访问这里

这对你很有用

    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不返回类名,它返回类型名。如果要提取家具或椅子,请使用instanceof。请参见:。例如:
a.constructor.name
b.constructor.name
。我不知道为什么这个问题会被否决。我可能不知道JavaScript的复杂概念。那么,我可以不向社区提出这个要求吗?我认为这是一种侮辱。typeof不返回类名,它返回类型名。如果要提取家具或椅子,请使用instanceof。请参见:。例如:
a.constructor.name
b.constructor.name
。我不知道为什么这个问题会被否决。我可能不知道JavaScript的复杂概念。那么,我可以不向社区提出这个要求吗?我认为这是相当侮辱性的。这仍然为我返回“object”。它应该做什么?它仍然会为我返回“object”。它应该做什么?