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