LeetCode - 2618.检查是否是类的对象实例

学习 · 2023-10-17 · 54 人浏览

前置

instanceof 关键字会判断右侧的构造函数的 prototype 属性是否出现在左侧实例对象的原型链上
所有对象都具有__proto__ 属性,它会指向创建它的构造函数的prototype属性

MDN鼓励使用getPrototypeOf 来代替 proto 的属性访问

要求

  1. obj 可以是任意参数,即它也可能是nullundefined

题解

var checkIfInstanceOf = function (obj, classFunction) {
  if (obj === null || obj === undefined || !(classFunction instanceof Function))
    return false;

  // 拿到对象的原型
  let objProto = Object.getPrototypeOf(obj);
  // 如果 当前原型往上查找 还是不等于 prototype原型 则继续查找
  while (objProto !== classFunction.prototype) {
    objProto = Object.getPrototypeOf(objProto);
  }
  return objProto === classFunction.prototype;
};
Leetcode 原型
Theme Jasmine by Kent Liao