lodash源码分析之isObjectLike

栏目: 编程工具 · 发布时间: 7年前

内容简介:这世界上之所以会有无主的东西,方法是因为有人失去了记忆。——王小波《万寿寺》本文为读 lodash 源码的第二十篇,后续文章会更新到这个仓库中,欢迎 star:

这世界上之所以会有无主的东西,方法是因为有人失去了记忆。

——王小波《万寿寺》

本文为读 lodash 源码的第二十篇,后续文章会更新到这个仓库中,欢迎 star: pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

isObjectLike 的源码很短,如下:

function isObjectLike(value) {
  return typeof value == 'object' && value !== null
}
复制代码

其实就是使用 typeof 操作符,如果返回值为 object ,并且值又不为 null 时,就认为是类对象。

这里需要简单地说一下 typeof 操作符, typeof 会遵循下面的规则来返回:

类型 结果
Undefined 'undefined'
Null 'object'
Boolean 'boolean'
Number 'number'
String 'string'
Symbol 'symbol'
宿主对象 由宿主实现,但是不能为 'undefined' , 'boolean' , 'number''string'
函数对象 'function'
任意其它对象 'object'

这里需要说一下的是 null ,也是 isObjectLike 的关键所在,使用 typeof 的操作符时, null 会返回 object ,为什么会这样呢,看 MDN 上的解释:

在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null的类型标签也成为了 0, typeof null 就错误的返回了" object" 。( reference

ECMAScript提出了一个修复(通过opt-in),但被拒绝。这将导致typeof null === 'object'。

另外还有一点需要注意的,在由宿主实现的对象中,规范规定了不能返回 'undefined' , 'boolean' , 'number''string' 这几种类型,但是 document.all 例外,返回的是 'undefined' ,这是不遵循规范的实现。


以上所述就是小编给大家介绍的《lodash源码分析之isObjectLike》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据压缩导论(第4版)

数据压缩导论(第4版)

[美] Khalid Sayood / 贾洪峰 / 人民邮电出版社 / 2014-1 / 129.00

数据压缩已经成为信息革命的一门支撑技术,这场革命已经改变了我们的生活,而在此过程中,数据压缩也变得几乎无处不在。从MP3播放器到智能手机,再到数字电视和数字电影,数据压缩几乎成了所有信息技术的必备要素。 近年来,以大数据为标志的互联网技术高歌猛进。数据规模大、产生速度快、来源多样等特性,导致数据存储和处理都前所未有地复杂。《数据压缩导论(第4版)》作为迄今为止数据压缩领域最全面而深入的著作,......一起来看看 《数据压缩导论(第4版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具