摘要:另外還有一點需要注意的,在由宿主實現的對象中,規范規定了不能返回和這幾種類型,但是例外,返回的是,這是不遵循規范的實現。
這世界上之所以會有無主的東西,方法是因為有人失去了記憶。——王小波《萬壽寺》
本文為讀 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" ,這是不遵循規范的實現。
參考MDN:typeof
License署名-非商業性使用-禁止演繹 4.0 國際 (CC BY-NC-ND 4.0)
最后,所有文章都會同步發送到微信公眾號上,歡迎關注,歡迎提意見:
作者:對角另一面
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98120.html
摘要:卡爾維諾煙云本文為讀源碼的第二十一篇,后續文章會更新到這個倉庫中,歡迎也會同步倉庫的更新,地址依賴源碼分析之數據類型獲取的兼容性源碼分析之源碼分析用來判斷某個值是否為類對象。如果某個值為類對象使用判斷,并且調用返回的值為時,則為類對象。 有人命中注定要過平庸的生活,默默無聞,因為他們經歷了痛苦或不幸;有人卻故意這樣做,那是因為他們得到的幸福超過了他們的承受能力。——卡爾維諾《煙云》 ...
摘要:寫了幾篇筆記以后發現很多函數大量依賴了內部的基礎函數,一次性讀完有點麻煩,所以還是決定從基礎函數沒有或者很少依賴其他函數看起。 百忙之中(閑來無事)想抽點時間好好讀一下源碼,于是就選了Lodash來寫一個系列罷。寫了幾篇筆記以后發現很多函數大量依賴了內部的基礎函數,一次性讀完有點麻煩,所以還是決定從基礎函數(沒有或者很少依賴其他函數)看起。 文檔地址:中文文檔?? 英文文檔源碼地址:g...
摘要:與之前的類似,利用構造函數創建的字符串是一個所以檢測字符串,除了基本字符串以外還要注意字符串對象。也就是說該對象由構造函數創建,或者為。 原文:https://fatge.github.io/2019/...歡迎Star:https://github.com/FatGe/FatG... showImg(https://fatge.xyz/static/img/js-types.png...
摘要:在幾天前發布了新版本,被合入。但是在版本迭代的背后很多有趣的設計值得了解。參數處理這項改動由提出。對透明化處理中的,達到將包裹起來的目的。對的凍結認為,在中使用和方法是一種反模式。尤其是這樣的新,某些開發者認為將逐漸取代。 showImg(https://segmentfault.com/img/remote/1460000014571148); Redux 在幾天前(2018.04....
閱讀 1261·2021-09-02 13:36
閱讀 2714·2019-08-30 15:44
閱讀 2972·2019-08-29 15:04
閱讀 3193·2019-08-26 13:40
閱讀 3643·2019-08-26 13:37
閱讀 1172·2019-08-26 12:22
閱讀 1003·2019-08-26 11:36
閱讀 1214·2019-08-26 10:41