js 수 동 으로 new, instanceof 실현

687 단어 면접 문제
아래 방법 은 직접 측정 하면 효과 가 있다.
실현 new
function _new(fn, ...args) {
    //       
    let obj = new Object();
    obj.__proto__ = fn.prototype; // obj __proto__  fn prototype,    
    let result = fn.apply(obj, args) //  this   
    return typeof result === "object" ? result : obj;
}

실현 instanceof
function instance_of(L, R) { //L      object,R      constructor
    const R_P = R.prototype; //   R      
    L = L.__proto__; //   L      ,              
    while (true) {
        if (L === null)
            return false;
        if (R_P === L) //     :     true 
            return true;
        L = L.__proto__;
    }
}

좋은 웹페이지 즐겨찾기