關(guān)于typeof 和instanceof 原理問題

一、typeof 原理

js 在底層存儲變量的時候,會在變量的機器碼的低位1-3位存儲其類型信息

000:對象
010:浮點數(shù)
100:字符串
110:布爾
1:整數(shù)

但是對于undefined和null來說,信息存儲有點特殊

null:所有的機器碼都為0,所以會被認為是 object
undefined: 用-2^30整數(shù)來表示

tip:還有一個不錯的判斷類型的方法 Object.prototype.toString

二、 instanceof 原理(其實就是原型鏈方面的問題)

即判斷右邊變量的prototype 是否在左邊變量的原型鏈上

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

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

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