Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
chencl1986 opened this issue Nov 21, 2024 · 0 comments

Comments

@chencl1986
Copy link
Owner

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

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

解题思路:

我们可以使用 JavaScript 的 instanceof 运算符来检查一个对象是否是一个类的实例。然而,instanceof 运算符不能用于检查原始类型的值(如数字、字符串、布尔值、nullundefinedBigInt)是否是对应的包装对象的实例。为了处理这种情况,我们可以先使用 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;
};

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant