一杖小、typeof 原理
js 在底層存儲(chǔ)變量的時(shí)候轧飞,會(huì)在變量的機(jī)器碼的低位1-3位存儲(chǔ)其類(lèi)型信息
000:對(duì)象
010:浮點(diǎn)數(shù)
100:字符串
110:布爾
1:整數(shù)
但是對(duì)于undefined和null來(lái)說(shuō)紊浩,信息存儲(chǔ)有點(diǎn)特殊
null:所有的機(jī)器碼都為0评腺,所以會(huì)被認(rèn)為是 object
undefined: 用-2^30整數(shù)來(lái)表示
tip:還有一個(gè)不錯(cuò)的判斷類(lèi)型的方法 Object.prototype.toString
二切蟋、 instanceof 原理(其實(shí)就是原型鏈方面的問(wèn)題)
即判斷右邊變量的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__
}
}