鍍金池/ 問(wèn)答/HTML/ js instanceof判斷問(wèn)題

js instanceof判斷問(wèn)題

問(wèn)題描述

類(lèi)型判斷

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

類(lèi)型判斷

相關(guān)代碼

a = true
b = new Boolean(true)
b instanceof Boolean // true
a.constructor === b.constructor // true

why?
a instanceof Boolean ? false

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

是否能分析a = true和 new Boolean(true)區(qū)別, instanceof判斷原理

回答
編輯回答
有你在
  • 在控制臺(tái)輸入 typeof a 你會(huì)發(fā)現(xiàn)他是一個(gè)'boolean' 而不是一個(gè)Boolean
  • 然后再輸入 typeof b 你會(huì)發(fā)現(xiàn)輸出的是一個(gè)'object' js中Boolean只是一個(gè)對(duì)象
  • instanceof 判斷的是 左邊的對(duì)象的原型對(duì)象是否是右邊的構(gòu)造函數(shù)的同級(jí)prototype. 當(dāng)判斷a instanceof Boolean的時(shí)候,js底層會(huì)把a(bǔ)轉(zhuǎn)換成具有屬性的對(duì)象,其實(shí)在底層來(lái)說(shuō)他們是一樣的,但是他又不是new 出來(lái)的 所以 instanceof 返回的是false
  • 試想一下 你自定義了一個(gè)類(lèi) 在你沒(méi)通過(guò)new調(diào)用的時(shí)候 用其他的方式產(chǎn)生了一個(gè)屬于該類(lèi)的實(shí)例,程序是不是變得有點(diǎn)不可預(yù)測(cè)了?
  • 以上僅個(gè)人愚見(jiàn),并非權(quán)威解答,大神見(jiàn)了莫噴,大家可以互相交流學(xué)習(xí).
2017年5月20日 22:12