内容简介:这世界上之所以会有无主的东西,方法是因为有人失去了记忆。——王小波《万寿寺》本文为读 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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 以太坊源码分析(36)ethdb源码分析
- [源码分析] kubelet源码分析(一)之 NewKubeletCommand
- libmodbus源码分析(3)从机(服务端)功能源码分析
- [源码分析] nfs-client-provisioner源码分析
- [源码分析] kubelet源码分析(三)之 Pod的创建
- Spring事务源码分析专题(一)JdbcTemplate使用及源码分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法分析导论
(美)Robert Sedgewick、(法)Philippe Flajolet / 冯舜玺、李学武、裴伟东、等其他 / 机械工业出版社 / 2006-4 / 38.00元
本书阐述了用于算法数学分析的主要方法,所涉及的材料来自经典数学课题,包括离散数学、初等实分析、组合数学,以及来自经典的计算机科学课题,包括算法和数据结构,本书内容集中覆盖基础、重要和有趣的算法,前面侧重数学,后面集中讨论算法分析的应用,重点的算法分的的数学方法。每章包含大量习题以及参考文献,使读者可以更深入地理解书中的内容。 本书适合作为高等院校数学、计算机科学以及相关专业的本科生和研究生的......一起来看看 《算法分析导论》 这本书的介绍吧!