成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

lodash源碼分析之isObjectLike

Bmob / 1424人閱讀

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

這世界上之所以會有無主的東西,方法是因為有人失去了記憶。

——王小波《萬壽寺》

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

gitbook也會同步倉庫的更新,gitbook地址:pocket-lodash

源碼分析

isObjectLike 的源碼很短,如下:

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

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

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

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

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

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

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

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

參考

MDN:typeof

License

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

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

作者:對角另一面

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/98120.html

相關(guān)文章

  • lodash源碼分析isArguments

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

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

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

    evin2016 評論0 收藏0
  • Lodash 是如何做類型檢測的

    摘要:與之前的類似,利用構(gòu)造函數(shù)創(chuàng)建的字符串是一個所以檢測字符串,除了基本字符串以外還要注意字符串對象。也就是說該對象由構(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 評論0 收藏0
  • 探索 Redux4.0 版本迭代 論基礎(chǔ)談?wù)雇▽Ρ?React context)

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

    xialong 評論0 收藏0

發(fā)表評論

0條評論

Bmob

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<