本人前端小白,今年六月份剛畢業,一直想花時間研究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涉及的知識點差很少,因此基本實現了。