Skip to content

LeetCode题解:2618. 检查是否是类的对象实例,使用instanceof #488

Description

@chencl1986

原题链接:
https://leetcode.cn/problems/check-if-object-instance-of-class/

题目要求我们编写一个函数,检查给定的值是否是给定类或超类的实例。可以传递给函数的数据类型没有限制。例如,值或类可能是 undefined。

解题思路:

我们可以使用 JavaScript 的 instanceof 运算符来检查一个对象是否是一个类的实例。然而,instanceof 运算符不能用于检查原始类型的值(如数字、字符串、布尔值、null、undefined 和 BigInt)是否是对应的包装对象的实例。为了处理这种情况,我们可以先使用 Object() 函数将原始类型的值转换为对象,然后再使用 instanceof 运算符进行检查。

解题代码:

/**
 * @param {any} obj - 需要检查的对象
 * @param {any} classFunction - 需要检查的类
 * @return {boolean} - 如果 obj 是 classFunction 的实例,则返回 true,否则返回 false
 */
var checkIfInstanceOf = function(obj, classFunction) {
  // 如果 obj 是 null 或 undefined,或者 classFunction 不是一个函数,
  // 那么我们可以直接返回 false
  if (obj === null || obj === undefined || !(classFunction instanceof Function))
    return false;

  // 使用 Object() 函数将 obj 转换为对象(如果它是一个原始类型的值),
  // 然后使用 instanceof 运算符检查它是否是 classFunction 的实例
  return Object(obj) instanceof classFunction;
};

这个解法可以处理各种类型的值和类,包括原始类型的值和它们的包装对象,以及自定义的类和它们的实例。

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions