千万不要再用错了这个 Lodash 方法了!可能酿成大祸!

开发 前端
说回来 isObject​,我为什么看到这个方法我就心慌呢?因为以前踩过坑,很多人一直认为isObject是用来判断对象类型的,其实他们认为的也没错,但是他们可能没好好看 Lodash 的文档。

前言

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心!

前几天接手了一个项目,发现有一个 Lodash 的方法在项目里用的非常多!那就是 isObject 这个方法!

我一看到这个方法我就害怕,马上去找了之前开发这个项目的前端,以下是跟他的对话:

  • 我:大佬,你知道 Lodash 的 isObject 是干啥用的吗?
  • 他说:就是判断一个值是否是一个对象类型。
  • 我:那数组、函数 这些算不算对象呢?
  • 他说:应该。。应该不算吧?
  • 我:。。。。。。。

我去翻了翻组内其他项目的代码,发现只要是判断普通对象的类型的,都用的是 isObject !!!!!!

万物皆对象

我们在学习 JavaScript 基础的时候会听到这么一句话万物皆对象,其实这不是没有道理的,看过原型链图的会比较理解这句话。

图片图片

说回 isObject

说回来 isObject,我为什么看到这个方法我就心慌呢?因为以前踩过坑,很多人一直认为isObject是用来判断对象类型的,其实他们认为的也没错,但是他们可能没好好看 Lodash 的文档。

图片图片

文档写着:检查 value 是否为 Object 的language type。(例如: arrays, functions, objects, regexes,new Number(0), 以及 new String(''))。

图片图片

现在知道问题出在哪了吧?大部分人都认为:判断普通对象可以使用 isObject 来判断。

但其实这么认为是不对的,因为isObject检测后返回 true 的类型,可不止普通对象哦!

isPlanObject

如果你想要判断一个值是否为普通对象,可以使用 isPlanObject。

图片图片

这样才能达到我们想要的目的。

图片 图片

责任编辑:武晓燕 来源: 前端之神
相关推荐

2010-03-24 14:54:01

2022-10-31 08:40:06

消息RocketMQ消息重复

2022-03-01 07:37:30

MySQL场景框架

2024-03-18 07:56:49

CSSJS代码调试

2020-04-03 08:30:44

RabbitMQKafka软件

2018-07-12 14:56:11

机箱装机风扇

2024-12-06 08:20:22

BigDecimal浮点数初始化

2017-06-22 16:47:42

二维码支付信息泄露

2022-07-22 09:15:07

OpitonalJava代码

2019-09-19 11:20:51

PythonPyCharm脚本语言

2021-09-27 09:33:27

内存创建集合

2024-11-20 18:16:39

MyBatis批量操作数据库

2013-01-04 10:15:05

2017-05-09 16:20:47

3D打印3D食品

2022-09-20 18:27:31

Kubernetes云服务

2022-04-26 09:53:30

WiFi网络

2022-04-18 09:54:37

JDK8日期前端

2021-09-08 22:29:46

Windows 11Windows微软

2019-04-03 14:03:58

Linux命令运行

2017-05-24 11:44:17

Linux命令
点赞
收藏

51CTO技术栈公众号