Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

js 判断是对象

作者:死亡之神   发布日期:2025-09-03   浏览:78

function isObject(value) {
  // typeof null 会返回 "object",所以我们需要特别检查 null
  if (value === null) {
    return false;
  }
  // 使用 typeof 检查是否为对象或函数,然后使用 Object.prototype.toString 精确判断是否为普通对象
  return typeof value === 'object' || typeof value === 'function';
}

// 更精确的判断是否为普通对象(排除数组、日期等)
function isPlainObject(value) {
  if (isObject(value) === false) {
    return false;
  }
  // 获取构造函数的原型
  const proto = Object.getPrototypeOf(value);
  // 如果没有原型,或者原型是 Object.prototype,则认为是普通对象
  return proto === null || proto === Object.prototype;
}

// 示例用法
console.log(isObject({})); // true
console.log(isObject([])); // true
console.log(isObject(null)); // false
console.log(isObject(123)); // false

console.log(isPlainObject({})); // true
console.log(isPlainObject([])); // false
console.log(isPlainObject(new Date())); // false

解释说明:

  1. isObject 函数:用于判断一个值是否为对象或函数。它首先检查值是否为 null,因为 typeof null 返回 "object",这是 JavaScript 的一个历史遗留问题。接着使用 typeof 来判断值是否为对象或函数。

  2. isPlainObject 函数:更精确地判断一个值是否为普通对象(即通过 {}new Object() 创建的对象),而不是数组、日期等其他类型的对象。它通过检查对象的原型链来实现这一点。

  3. 示例用法:展示了如何使用这两个函数进行对象类型的判断,并输出了相应的结果。

上一篇:js 判断是否是对象

下一篇:js 判断对象

大家都在看

js 数组对象排序

js 数组删掉第一个值

js fill

js 数组连接

js json数组

js 数组复制

js 复制数组

js 数组拷贝

js 对象数组合并

js 对象转数组

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站