前端面试 【JavaScript】— 能不能手动实现一下 instanceof 的功能?

2021-11-17 18:13:50 浏览数 (2)

核心:原型链的向上查找。

代码语言:javascript复制
function myInstanceOf(left, right) {
  // 基本数据类型直接返回false
  if (typeof left !== 'object' || left === null) return false;
  // getProtypeOf是Object对象自带的一个方法,能够拿到参数的原型对象
  let proto = Object.getPrototypeOf(left);
  while (true) {
    // 查找到尽头,还没找到
    if (proto == null) return false;
    // 找到相同的原型对象
    if (proto == right.prototype) return true;
    proto = Object.getPrototypeOf(proto);
  }
}

测试:

代码语言:javascript复制
console.log(myInstanceOf("100", String));                // false

console.log(myInstanceOf(new String("100"), String));    // true

0 人点赞