如何在JavaScript中获取对象类型的名称?

阅读时长 5 分钟读完

在 JavaScript 中,我们可以使用 typeof 操作符来获取一个值的类型。然而,当我们想要获取一个对象的确切类型时,typeof 的结果将会是 "object"。因此,我们需要使用其他方法来获取对象类型的名称。

使用 Object.prototype.toString()

使用 Object.prototype.toString() 方法是获取对象类型的常用方式。该方法返回一个表示对象类型的字符串。例如:

从上面的示例中可以看出,Object.prototype.toString() 返回的字符串格式为 [object 类型],其中 类型 就是我们要获取的对象类型的名称。

但是,由于 Object.prototype.toString() 是一个通用方法,它也可以被某些对象重写。因此,在某些情况下,该方法可能不能正确地识别对象类型。

使用 instanceof 操作符

另一种获取对象类型的方法是使用 instanceof 操作符。instanceof 可以用于检查某个对象是否是某个类的实例。例如:

从上面的示例中可以看出,instanceof 可以正确地识别对象的类型。但是,该方法只能用于检查对象是否是某个类的实例,不能用于获取对象类型的名称。

使用 constructor 属性

每个 JavaScript 对象都有一个 constructor 属性,该属性引用了创建该对象的构造函数。因此,我们可以使用 constructor.name 来获取对象类型的名称。例如:

Object.prototype.toString() 不同,constructor.name 是由对象的构造函数提供的,因此它更可靠。

需要注意的是,如果对象是通过字面量形式创建的,那么它的 constructor 属性将指向 Object 构造函数。因此,在这种情况下,我们需要使用其他方法来获取对象类型的名称。

示例代码

下面是一个完整的示例代码,展示了如何使用不同的方法来获取对象类型的名称:

-- -------------------- ---- -------
-------- ------------ -
  -- ---- --- ----- ------ -------
  -- ------- --- --- --------- ------ ------ ----
  ------ -------------------------------------------- ----
-

----- -------- - ------ -------
------------------------------- -- -----------

----- ------- - --- -- ---
------------------------------ -- ----------

----- -------- - - ----- ------- ---- -- --
------------------------------- -- -----------

在上面的示例代码中,我们定义了一个 getType() 函数,该函数可以获取任何对象的类型的名称。该函数首先检查对象是否为 null,如果是,则返回 "null";然后检查对象是否为基本类型(如字符串、数字、布尔值等),如果是,则返回该类型的名称;最后,如果对象是复杂类型(如数组、对象等),则使用 Object.prototype.toString() 来获取对象类型的名称。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/7346

纠错
反馈