首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检查JavaScript对象是否直接是`{}`实例,而不是子类?

在JavaScript中,对象可以通过花括号 {} 创建。创建对象时,如果对象字面量不使用new关键字,而是直接使用花括号 {},那么创建的就是一个实例对象。如果对象字面量使用new关键字创建,那么创建的就是一个子类对象。如何检查JavaScript对象是否直接是{}实例,而不是子类?可以使用Object.getPrototypeOf()方法来检查对象的直接父类。如果对象直接是{}实例,那么Object.getPrototypeOf()方法返回null。如果对象是子类,那么Object.getPrototypeOf()方法返回该子类的原型对象。以下是示例代码:

代码语言:javascript
复制
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,否则返回falseisSubclassObject函数接受一个对象作为参数,如果该对象是子类,则返回true,否则返回false。在testObject函数中,我们使用四个不同的对象进行测试,包括直接使用花括号 {} 创建的实例对象和通过new Object()创建的子类对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券