亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

lodash源碼分析之isObjectLike

Bmob / 1423人閱讀

摘要:另外還有一點(diǎn)需要注意的,在由宿主實(shí)現(xiàn)的對(duì)象中,規(guī)范規(guī)定了不能返回和這幾種類型,但是例外,返回的是,這是不遵循規(guī)范的實(shí)現(xiàn)。

這世界上之所以會(huì)有無主的東西,方法是因?yàn)橛腥耸チ擞洃洝?p>——王小波《萬壽寺》

本文為讀 lodash 源碼的第二十篇,后續(xù)文章會(huì)更新到這個(gè)倉(cāng)庫(kù)中,歡迎 star:pocket-lodash

gitbook也會(huì)同步倉(cāng)庫(kù)的更新,gitbook地址:pocket-lodash

源碼分析

isObjectLike 的源碼很短,如下:

function isObjectLike(value) {
  return typeof value == "object" && value !== null
}

其實(shí)就是使用 typeof 操作符,如果返回值為 object ,并且值又不為 null 時(shí),就認(rèn)為是類對(duì)象。

這里需要簡(jiǎn)單地說一下 typeof 操作符,typeof 會(huì)遵循下面的規(guī)則來返回:

類型 結(jié)果
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol "symbol"
宿主對(duì)象 由宿主實(shí)現(xiàn),但是不能為 "undefined", "boolean", "number""string"
函數(shù)對(duì)象 "function"
任意其它對(duì)象 "object"

這里需要說一下的是 null ,也是 isObjectLike 的關(guān)鍵所在,使用 typeof 的操作符時(shí),null 會(huì)返回 object ,為什么會(huì)這樣呢,看 MDN 上的解釋:

在 JavaScript 最初的實(shí)現(xiàn)中,JavaScript 中的值是由一個(gè)表示類型的標(biāo)簽和實(shí)際數(shù)據(jù)值表示的。對(duì)象的類型標(biāo)簽是 0。由于 null 代表的是空指針(大多數(shù)平臺(tái)下值為 0x00),因此,null的類型標(biāo)簽也成為了 0,typeof null就錯(cuò)誤的返回了"object"。(reference)

ECMAScript提出了一個(gè)修復(fù)(通過opt-in),但被拒絕。這將導(dǎo)致typeof null === "object"。

另外還有一點(diǎn)需要注意的,在由宿主實(shí)現(xiàn)的對(duì)象中,規(guī)范規(guī)定了不能返回 "undefined", "boolean", "number""string" 這幾種類型,但是 document.all 例外,返回的是 "undefined" ,這是不遵循規(guī)范的實(shí)現(xiàn)。

參考

MDN:typeof

License

署名-非商業(yè)性使用-禁止演繹 4.0 國(guó)際 (CC BY-NC-ND 4.0)

最后,所有文章都會(huì)同步發(fā)送到微信公眾號(hào)上,歡迎關(guān)注,歡迎提意見:

作者:對(duì)角另一面

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/98120.html

相關(guān)文章

  • lodash源碼分析isArguments

    摘要:卡爾維諾煙云本文為讀源碼的第二十一篇,后續(xù)文章會(huì)更新到這個(gè)倉(cāng)庫(kù)中,歡迎也會(huì)同步倉(cāng)庫(kù)的更新,地址依賴源碼分析之?dāng)?shù)據(jù)類型獲取的兼容性源碼分析之源碼分析用來判斷某個(gè)值是否為類對(duì)象。如果某個(gè)值為類對(duì)象使用判斷,并且調(diào)用返回的值為時(shí),則為類對(duì)象。 有人命中注定要過平庸的生活,默默無聞,因?yàn)樗麄兘?jīng)歷了痛苦或不幸;有人卻故意這樣做,那是因?yàn)樗麄兊玫降男腋3^了他們的承受能力?!柧S諾《煙云》 ...

    _Dreams 評(píng)論0 收藏0
  • Lodash學(xué)習(xí)筆記 - 一些基礎(chǔ)函數(shù)(1)

    摘要:寫了幾篇筆記以后發(fā)現(xiàn)很多函數(shù)大量依賴了內(nèi)部的基礎(chǔ)函數(shù),一次性讀完有點(diǎn)麻煩,所以還是決定從基礎(chǔ)函數(shù)沒有或者很少依賴其他函數(shù)看起。 百忙之中(閑來無事)想抽點(diǎn)時(shí)間好好讀一下源碼,于是就選了Lodash來寫一個(gè)系列罷。寫了幾篇筆記以后發(fā)現(xiàn)很多函數(shù)大量依賴了內(nèi)部的基礎(chǔ)函數(shù),一次性讀完有點(diǎn)麻煩,所以還是決定從基礎(chǔ)函數(shù)(沒有或者很少依賴其他函數(shù))看起。 文檔地址:中文文檔?? 英文文檔源碼地址:g...

    evin2016 評(píng)論0 收藏0
  • Lodash 是如何做類型檢測(cè)的

    摘要:與之前的類似,利用構(gòu)造函數(shù)創(chuàng)建的字符串是一個(gè)所以檢測(cè)字符串,除了基本字符串以外還要注意字符串對(duì)象。也就是說該對(duì)象由構(gòu)造函數(shù)創(chuàng)建,或者為。 原文:https://fatge.github.io/2019/...歡迎Star:https://github.com/FatGe/FatG... showImg(https://fatge.xyz/static/img/js-types.png...

    keke 評(píng)論0 收藏0
  • 探索 Redux4.0 版本迭代 論基礎(chǔ)談?wù)雇▽?duì)比 React context)

    摘要:在幾天前發(fā)布了新版本,被合入。但是在版本迭代的背后很多有趣的設(shè)計(jì)值得了解。參數(shù)處理這項(xiàng)改動(dòng)由提出。對(duì)透明化處理中的,達(dá)到將包裹起來的目的。對(duì)的凍結(jié)認(rèn)為,在中使用和方法是一種反模式。尤其是這樣的新,某些開發(fā)者認(rèn)為將逐漸取代。 showImg(https://segmentfault.com/img/remote/1460000014571148); Redux 在幾天前(2018.04....

    xialong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<