JavaScript基礎之--- 手寫instanceof 的實現


手寫instanceof 的實現:

instanceof 運算符用於測試構造函數的 prototype 屬性是否出現在對象原型鏈中的任何位置。

 

實現思路:

首先 instanceof 左側必須是對象, 才能找到它的原型鏈

instanceof 右側必須是函數, 函數才會prototype屬性

迭代 , 左側對象的原型不等於右側的 prototype時, 沿着原型鏈重新賦值左側

 

// [1,2,3] instanceof Array ---- true

// L instanceof R
// 變量R的原型 存在於 變量L的原型鏈上
function instance_of(L,R){    
    // 驗證如果為基本數據類型,就直接返回false
    const baseType = ['string', 'number','boolean','undefined','symbol']
    if(baseType.includes(typeof(L))) { return false }
    
    let RP  = R.prototype;  //取 R 的顯示原型
    L = L.__proto__;       //取 L 的隱式原型
    while(true){           // 無線循環的寫法(也可以使 for(;;) )
        if(L === null){    //找到最頂層
            return false;
        }
        if(L === RP){       //嚴格相等
            return true;
        }
        L = L.__proto__;  //沒找到繼續向上一層原型鏈查找
    }
}

 

 


免責聲明!

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



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