JS-判斷js數(shù)據(jù)類型的幾種方式

js的數(shù)據(jù)類型分為兩大類:

值類型(基本類型):字符串(String)、數(shù)字(Number)牍疏、布爾(Boolean)菩收、對空(Null)、未定義(Undefined)鬓椭、Symbol。
引用數(shù)據(jù)類型:對象(Object)关划。

基本類型:也稱為簡單類型小染,由于其占據(jù)空間固定,是簡單的數(shù)據(jù)段贮折,為了便于提升變量查詢速度裤翩,將其存儲(chǔ)在棧中,即按值訪問调榄。

引用類型:也稱為復(fù)雜類型踊赠,由于其值的大小會(huì)改變,所以不能將其存放在棧中每庆,否則會(huì)降低變量查詢速度筐带,因此,其值存儲(chǔ)在堆中缤灵,而存儲(chǔ)在變量處的值伦籍,是一個(gè)指針,指向存儲(chǔ)對象的內(nèi)存處腮出,即按址訪問帖鸦。引用類型除 Object 外,還包括 Function 胚嘲、Array作儿、RegExp、Date 等等馋劈。

引用類型和基本類型的區(qū)別:
1攻锰、基本類型按訪問

image.png

2、引用類型按訪問
image.png

判斷類型的幾種方式

typeof

image.png

需要注意的是:

  • 基本類型除了null返回了object侣滩,其他都返回正確
  • 引用類型除了function口注,其他都返回object
    其中,null 有屬于自己的數(shù)據(jù)類型 Null 君珠, 引用類型中的 數(shù)組寝志、日期、正則 也都有屬于自己的具體類型,而 typeof 對于這些類型的處理材部,只返回了處于其原型鏈最頂端的 Object 類型毫缆,沒有錯(cuò),但不是我們想要的結(jié)果乐导。

instanceof

A instanceof B用來判斷A是否屬于B的實(shí)例苦丁,返回true或者false。


image.png

需要注意的是:

  • [ ]既是arrray的實(shí)例物臂,也是object的實(shí)例旺拉,[ ].__proto__指向 Array.prototype,而 Array.prototype.proto 又指向了Object.prototype棵磷,Object.prototype.__proto__ 指向了null蛾狗,然后原型鏈結(jié)束,[ ]仪媒、Array沉桌、Object 就在內(nèi)部形成了一條原型鏈
    image.png

ES5中可以用Array.isArray([])來準(zhǔn)確判斷數(shù)組的實(shí)例

  • instanceof 只能用來判斷兩個(gè)對象是否屬于實(shí)例關(guān)系, 而不能判斷一個(gè)對象實(shí)例具體屬于哪種類型算吩。

constructor

當(dāng)創(chuàng)建變量b時(shí)留凭,js會(huì)在b的原型上添加constructor屬性,指向b的引用


image.png

js在創(chuàng)建內(nèi)置對象時(shí)偎巢,也是這么做的:


image.png

需要注意的是:
  • null和undefiend是無效的蔼夜,因此沒有constructor存在
  • 程序員重寫對象的prototype 后,原有的 constructor 引用會(huì)丟失艘狭,造成判斷不準(zhǔn)確

Object.prototype.toString

Object對象有tostring方法返回:


image.png

而非object對象挎扰,則需要call/apply才能正確返回類型,返回格式為字符串類型的"[object 數(shù)據(jù)類型xxx]"

image.png

以上幾種方式可以在不同場景使用巢音。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遵倦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子官撼,更是在濱河造成了極大的恐慌梧躺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傲绣,死亡現(xiàn)場離奇詭異掠哥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秃诵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門续搀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人菠净,你說我怎么就攤上這事禁舷”肷迹” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵牵咙,是天一觀的道長派近。 經(jīng)常有香客問我,道長洁桌,這世上最難降的妖魔是什么渴丸? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮另凌,結(jié)果婚禮上谱轨,老公的妹妹穿的比我還像新娘。我一直安慰自己途茫,他們只是感情好碟嘴,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著囊卜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪错沃。 梳的紋絲不亂的頭發(fā)上栅组,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音枢析,去河邊找鬼玉掸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛醒叁,可吹牛的內(nèi)容都是我干的司浪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼把沼,長吁一口氣:“原來是場噩夢啊……” “哼啊易!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饮睬,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤租谈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后捆愁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體割去,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年昼丑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呻逆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菩帝,死狀恐怖咖城,靈堂內(nèi)的尸體忽然破棺而出茬腿,到底是詐尸還是另有隱情,我是刑警寧澤酒繁,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布滓彰,位于F島的核電站,受9級(jí)特大地震影響州袒,放射性物質(zhì)發(fā)生泄漏揭绑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一郎哭、第九天 我趴在偏房一處隱蔽的房頂上張望他匪。 院中可真熱鬧,春花似錦夸研、人聲如沸邦蜜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悼沈。三九已至,卻和暖如春姐扮,著一層夾襖步出監(jiān)牢的瞬間絮供,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工茶敏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壤靶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓惊搏,卻偏偏與公主長得像贮乳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子恬惯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359