当前位置: 欣欣网 > 码农

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

2024-06-27码农

已帮助数百位同学拿到了中大厂 offer

前言

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


前几天接手了一个项目,发现有一个 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


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


    结语

    我是林三心

  • 一个待过 小型toG型外包公司、大型外包公司、小公司、潜力型创业公司、大公司 的作死型前端选手;

  • 一个偏前端的全干工程师;

  • 一个不正经的掘金作者;

  • 逗比的B站up主;

  • 不帅的小红书博主;

  • 喜欢打铁的篮球菜鸟;

  • 喜欢历史的乏味少年;

  • 喜欢rap的五音不全弱鸡如果你想一起学习前端,一起摸鱼,一起研究简历优化,一起研究面试进步,一起交流历史音乐篮球rap,可以来俺的摸鱼学习群哈哈,点这个,有7000多名前端小伙伴在等着一起学习哦 --> 摸鱼沸点

  • 结语

    我是林三心,感谢您的阅读~

    1v1私教、找工作、全程陪跑、终身服务

    可直接加 Sunday老师 微信沟通,回复【资料】可直接领取 Sunday独家整理 大厂面试题、大厂真实面经