JavaScript 中检查一个值是否为对象

51 篇文章 3 订阅

检查一个值是否是一个对象:

  1. 验证该值具有对象类型 - typeof variable === 'object'
  2. 验证该值不为空 - variable !== null
  3. 验证该值不是数组 - !Array.isArray(variable)
  4. 如果所有条件都通过,则该值是一个对象。
const variable = {name: 'Tom'};

if (
  typeof variable === 'object' &&
  variable !== null &&
  !Array.isArray(variable)
) {
  console.log(' Value is an object');
} else {
  console.log(' Value is not an object');
}

我们在语句中使用了 逻辑 AND (&&)运算符 来链接 3 个 if 条件。

所有条件都必须通过才能让我们的if块运行。

第一个条件使用 typeof 运算符来检查一个值的类型是否为"object"。

typeof运算符返回一个字符串,指示值的类型。这里有些例子。

console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof null); // "object"
console.log(typeof function () {}); // "function"
console.log(typeof (() => {})); // "function"
console.log(typeof ''); // "string"
console.log(typeof 0); // "number"

注意 ,数组和null值的类型也为"object" 。 为了确保该值不存储数组或 null,我们必须添加 2 个额外的检查。

我们的第二个条件检查该值是否不等于null。

第三个 - 该值不是数组。

如果所有条件都通过,我们可以断定该值是一个对象。

以下 3 种类型都具有 object 值:

  • 对象字面量{}
  • 数组[]
  • 一个null值

另一种方法是使用 Object 类的 prototype 属性。

// true
console.log(Object.prototype.toString.call({}) === '[object Object]');

// false
console.log(Object.prototype.toString.call([]) === '[object Object]');

// false
console.log(Object.prototype.toString.call(null) === '[object Object]');

我们调用原型上的方法 toString(),传递给它一个对象、一个数组和null。

字符串化时,所有 3 个名称都不同:

// "[object Object]"
console.log(Object.prototype.toString.call({}));

// "[object Array]"
console.log(Object.prototype.toString.call([]));

// ️"[object Null]"
console.log(Object.prototype.toString.call(null));

对于不同类型的对象,都有自己的 toString() 方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值