在 JavaScript 中获取对象的类名

Sahil Bhosale 2022年5月10日
在 JavaScript 中获取对象的类名

在面向对象编程中,每当我们定义一个类时,就会在类内部自动创建一个构造函数。它将出现在类中,但不可见。只有当程序员没有明确定义它时才会创建它。此构造函数称为默认构造函数。

我们对理解构造函数很感兴趣,因为构造函数的名称与类名相同。因此,我们很容易在 JavaScript 中使用其构造函数名称来获取对象的类名。

构造函数是默认构造函数还是你创建它(程序员)都没有关系;构造函数的名称将始终与其类名相同。

使用 JavaScript 中的 constructor 函数获取对象的类名

要创建一个类的对象,我们首先必须调用它的构造函数。调用构造函数后,我们将其引用存储在一个变量中,以便稍后我们可以对该对象做任何我们想做的事情。让我们通过一个例子来理解这一点。

在这里,我们有一个名为 Person 的空类。我们使用 new 关键字创建这个类的一个对象,并调用它的默认构造函数 Person()。然后我们将它存储在一个名为 obj 的变量中。

现在我们已经创建了一个 Person 类的对象,让我们在其构造函数的帮助下获取该对象的类名。

要获取构造函数的名称,我们可以使用 JavaScript 中的内置函数 constructor。它将返回一个函数。要获取特定的类名,我们必须使用 constructor 函数的 name 属性。

这显示在下面的代码片段中。

class Person{
}

var obj = new Person();
console.log(obj.constructor.name);

输出:

Person

你还可以在一个类中创建一个函数,该函数将返回上述 constructor 函数。并且在创建了这个类的一个对象之后,你可以任意调用这个函数并得到那个对象的类名。

这显示在下面的代码片段中。

class Person {
  getClassName() {
    return this.constructor.name;
  }
}

在这里,我们必须使用一个 this 关键字,它将引用正在调用 getClassName() 方法的当前对象并返回其类名。

唯一需要担心的是,如果你正在缩小 JavaScript,构造函数的名称将在缩小后发生变化。如果你调用了 getClassName 函数,它将返回一些其他类名,这些类名将在缩小后出现,而不是 Person

此外,IE9 下不支持 name 属性。这不是一个大问题,因为大多数用户使用 Chrome 和 Firefox 等现代浏览器。

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

相关文章 - JavaScript Object