在JavaScript中,对象可以通过花括号 {}
创建。创建对象时,如果对象字面量不使用new关键字,而是直接使用花括号 {}
,那么创建的就是一个实例对象。如果对象字面量使用new关键字创建,那么创建的就是一个子类对象。如何检查JavaScript对象是否直接是{}
实例,而不是子类?可以使用Object.getPrototypeOf()方法来检查对象的直接父类。如果对象直接是{}
实例,那么Object.getPrototypeOf()方法返回null。如果对象是子类,那么Object.getPrototypeOf()方法返回该子类的原型对象。以下是示例代码:
function isObjectInstance(obj) {
return Object.getPrototypeOf(obj) === null;
}
function isSubclassObject(obj) {
return Object.getPrototypeOf(obj) !== null;
}
function testObject() {
const obj1 = {};
const obj2 = new Object();
const obj3 = new Object();
const obj4 = {};
console.log(isObjectInstance(obj1)); // true
console.log(isObjectInstance(obj2)); // false
console.log(isObjectInstance(obj3)); // true
console.log(isObjectInstance(obj4)); // true
console.log(isSubclassObject(obj1)); // false
console.log(isSubclassObject(obj2)); // true
console.log(isSubclassObject(obj3)); // false
console.log(isSubclassObject(obj4)); // false
}
testObject();
在上述示例代码中,isObjectInstance
函数接受一个对象作为参数,如果该对象是直接使用花括号 {}
创建的实例对象,则返回true
,否则返回false
。isSubclassObject
函数接受一个对象作为参数,如果该对象是子类,则返回true
,否则返回false
。在testObject
函数中,我们使用四个不同的对象进行测试,包括直接使用花括号 {}
创建的实例对象和通过new Object()
创建的子类对象。
领取专属 10元无门槛券
手把手带您无忧上云