js準(zhǔn)確判斷基本類型和引用類型的方法

Object.prototype.toString.call-準(zhǔn)確判斷變量的類型(無論是基本類型還是引用類型)

  • 一定要使用Object.prototype.toString而不是Object.toString,原因和原型鏈有關(guān):
  1. Object是一個function,即為Function的實(shí)例-Object.__proto__指向Function.prototype
  2. Object本身并沒有toString方法,該方法在Object.prototype
  3. Object.toString并不能找到prototype上的toString,Object會找到__proto__指向的Function.prototype,即Object.toString找到的是Function.toString

so,只能通過Object.prototype.toString找到toString方法

  • 下面看一下實(shí)例
console.log(Object.prototype.toString.call(1)) //"[object Number]"
console.log(Object.prototype.toString.call('3432')) //"[object String]"
console.log(Object.prototype.toString.call(true)) //"[object Boolean]"
console.log(Object.prototype.toString.call(undefined)) //"[object Undefined]"
console.log(Object.prototype.toString.call(null)) //"[object Null]"
console.log(Object.prototype.toString.call(()=>{})) //"[object Function]"
console.log(Object.prototype.toString.call({})) //"[object Object]"
console.log(Object.prototype.toString.call([])) //"[object Array]"
console.log(Object.prototype.toString.call(new Date())) //"[object Date]"
  • typeof對于null和引用類型判斷不準(zhǔn)確
  • instanceof不適用于基本數(shù)據(jù)類型

所以,這種方法更準(zhǔn)確

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容