判断JavaScript对象是否可用的正确方法
封面图
•
2026-01-11
•
JavaScript
214
0
0
0
在 JavaScript 中,判断一个对象是否“可用”(即是否为有效的、非 `null` 或 `undefined` 的对象)通常需要考虑以下几种情况: --- ## ✅ 正确判断对象是否可用的方法 ### 1. 检查是否为 `undefined` 或 `null` ```javascript if (obj !== undefined && obj !== null) { // 对象可用 } ``` 或者更简洁地写成: ```javascript if (obj) { // 对象可用(注意:如果 obj 是 false、0、"" 等也会被当作 false) } ``` > ⚠️ 注意:`if (obj)` 只能判断 `obj` 是否为 **truthy**,不能完全确定它是一个合法的对象。例如,`0`、`false`、`""` 都是 truthy 为 `false`,但它们不是对象。 --- ### 2. 判断是否为对象(使用 `typeof`) ```javascript if (typeof obj === 'object' && obj !== null) { // 是一个合法的对象 } ``` > ✅ 说明: - `typeof null` 返回 `'object'`,所以需要额外判断 `obj !== null` - `typeof []` 和 `typeof {}` 都返回 `'object'` --- ### 3. 更严格的判断(确保是普通对象) 如果你希望确认这个对象是普通的对象(而不是数组、函数、Date、RegExp 等),可以这样做: ```javascript if (typeof obj === 'object' && obj !== null && !Array.isArray(obj)) { // 是一个普通对象 } ``` 或者使用 `Object.prototype.toString.call()` 来判断类型: ```javascript if (Object.prototype.toString.call(obj) === '[object Object]') { // 是一个普通对象 } ``` --- ### 4. 使用 `lodash.isObject` 如果你使用了 [Lodash](https://lodash.com/) 库,可以使用: ```javascript import _ from 'lodash'; if (_.isObject(obj)) { // 是一个对象 } ``` 这会更安全地判断对象类型。 --- ## ✅ 总结:推荐的判断方法 ```javascript function isObject(obj) { return typeof obj === 'object' && obj !== null; } ``` 如果你还需要确保它是普通对象(不是数组、函数等): ```javascript function isPlainObject(obj) { return typeof obj === 'object' && obj !== null && !Array.isArray(obj); } ``` 或者使用: ```javascript function isPlainObject(obj) { return Object.prototype.toString.call(obj) === '[object Object]'; } ``` --- ## ❌ 不推荐的做法 - `if (obj)`:仅判断是否为 truthy,不能保证是对象。 - `typeof obj === 'object'`:不检查 `null`,可能误判。 - `obj instanceof Object`:在某些环境中(如跨 iframe)可能不可靠。 --- 如有具体场景(比如判断某个属性是否存在或是否是对象),欢迎继续提问!
上一篇:
javascript刷新当前页面
下一篇:
网页中调用JS弹出窗口
标题录入,一次不能超过6条
留言
评论