typeof 是否正確判斷類型? instanceof呢? instanceof 的實現原理是什么?


instanceof的實現代碼:

// L instanceof R
function instance_of(L, R) {//L 表示左表達式,R 表示右表達式
    var O = R.prototype;// 取 R 的顯式原型
    L = L.__proto__;    // 取 L 的隱式原型
    while (true) { 
        if (L === null) //已經找到頂層
            return false;  
        if (O === L)   //當 O 嚴格等於 L 時,返回 true
            return true; 
        L = L.__proto__;  //繼續向上一層原型鏈查找
    } 
}

首先typeof 能夠判斷基本數據類型,但是除了null,typeof null 返回的是object

但是對於對象來說typeof不能准確判斷類型,typeof 函數會返回function,除此之外全部都是object,不能准確判斷類型

instanceof可以判斷復雜數據類型,基本數據類型不可以

instanceof是通過原型鏈來判斷的 ,A instanceof B,在A的原型鏈中層層查找,是否有原型等於B.prototype,如果一直找到A的原型鏈的頂端(null,即Object.prototype._proto_),仍然不等於B,那么返回false,否則返回true


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM