在 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 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