本人前端小白,今年六月份刚毕业,一直想花时间研究react的源码,但都发现无从下手,每次看不了多久就放弃了,最后什么也没看懂。无心中在知乎看到一篇文章,不建议直接看已经迭代了这么多大版本的框架源码,建议能够按部就班的看,从一些简单的工具库的源码入手,既不会打消看源码的积极性,也能够借机夯实本身的基础。恍然大悟,因而打算从lodash下手,萌发了写这个lodash专题系列的想法,一方面是自我激励,一方面也是能够发出来和你们一块儿学习一下,欢迎大佬们批评指正。前端
以前也没有接触过lodash,打算从官方文档入手,学习一个api的使用,就本身尝试实现一个api,再与源码进行比较,分析本身的不足。我看的是v4.17.15(最新)的源码,那么让咱们从_.isObject开始吧~react
第一次写掘金,你们多多包涵~api
检查value是否为Object类型。bash
返回true or false。框架
function isObject(value) {
const type = typeof value
if(type === 'function') {
return true
}
if (type === 'object' && value != null) {
return true
}
return false
}
复制代码
function isObject(value) {
var type = typeof value
return value != null && (type == 'object' || type == 'function')
}
复制代码
源码精炼不少。值得学习和反复推敲。工具
实现的过程当中涉及的相关知识点有:学习
js的数据类型有哪些?ui
boolean、undefined、string、number、null、symbol和objectspa
typeof返回值为object的数据类型有哪些?code
null、array、regexp、date
typeof null === 'object',可是null为基本数据类型
function也是对象的一种,可是typeof的结果是'function'
null、undefined的相等和严格相等?
undefined == undefined // true
undefiend === undefined // true
undefined == null // true
null == null // true
null === null // false
复制代码
检查value是不是类对象。若是一个值是类对象,那么它不该该是null,并且typeof后的结果是"object"。
返回值:true/false。
function isObjectLike(value) {
return value != null && typeof value === 'object'
}
复制代码
function isObjectLike(value) {
return value != null && typeof value == 'object'
}
复制代码
与isObject涉及的知识点差很少,因此基本实现了。