JS ----手写原理

37 阅读1分钟

手写myInstanceOf方法

   /**
    * 自定义的instanceof检查函数。
    * @param {Object} L - 左侧对象,需要检查是否是右侧构造函数的实例。
    * @param {Function} R - 右侧构造函数,用来检查左侧对象是否是其实例。
    * @returns {boolean} 如果L是R的实例,则返回true;否则返回false。
    */
   function myinstanceof(L, R) {
      // 当L不为null时,继续检查
      while (L !== null) {
           // 如果L的__proto__等于R的prototype,则说明L是R的实例
           if (L.__proto__ === R.prototype) {
               return true;
           }
           // 将L更新为其原型,继续向上遍历原型链
           L = L.__proto__;
       }
       // 如果遍历完原型链仍未找到匹配的prototype,则L不是R的实例
       return false;
   }

   // 测试代码
   console.log(myinstanceof([], Array));  // true
   console.log(myinstanceof([], Object));  // true
   console.log(myinstanceof({}, Array));  // false