使用constructor
对象上的属性来获取对对象类的引用,例如obj.constructor
. 该constructor
属性返回对创建实例对象的构造函数的引用。
index.js
class Person {}
const p1 = new Person();
console.log(p1.constructor); // 👉️ [class Person]
我们使用 Object.constructor 属性来获取我们用来创建对象实例的类的引用。
您还可以使用运算符验证constructor
属性是否指向正确的类instanceof
。
index.js
class Person {}
const p1 = new Person();
console.log(p1.constructor); // 👉️ [class Person]
console.log(p1 instanceof p1.constructor); // 👉️ true
运算符检查右侧的instanceof
值是否出现在左侧值的原型中。
另一种方法是在类上创建一个方法。
index.js
class Person {
getClassName() {
return this.constructor;
}
}
const p1 = new Person();
console.log(p1.getClassName()); // 👉️ [class Person]
如果您需要经常访问对象的类,这是一种更好的方法。这有助于我们将 JavaScript 的一些内部结构抽象为一个方法。
请注意,所有对象(使用创建的对象除外)都具有构造函数属性。
Object.create(null)
在没有构造函数的情况下创建的对象具有指向Object
特定类型的主构造函数的构造函数属性。
index.js
console.log({}.constructor); // 👉️ [Function: Object]
console.log([].constructor); // 👉️ [Function: Array]