一、typeof 原理
js 在底層存儲變量的時候,會在變量的機器碼的低位1-3位存儲其類型信息
000:對象
010:浮點數
100:字符串
110:布爾
1:整數
但是對于undefined和null來說,信息存儲有點特殊
null:所有的機器碼都為0,所以會被認為是 object
undefined: 用-2^30整數來表示
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__
}
}