We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
原题链接: https://leetcode.cn/problems/check-if-object-instance-of-class/
解题思路:
我们可以使用 JavaScript 的原型链来检查一个对象是否是一个类的实例。在 JavaScript 中,每个对象都有一个内部属性 [[Prototype]],可以通过 __proto__ 属性来访问。一个对象的 __proto__ 属性指向了创建它的构造函数的 prototype 属性。因此,我们可以通过比较 obj.__proto__ 和 classFunction.prototype 是否相等来检查 obj 是否是 classFunction 的实例。如果不相等,我们就将 obj 设置为 obj.__proto__,然后继续比较,直到 obj.__proto__ 为 null。
[[Prototype]]
__proto__
prototype
obj.__proto__
classFunction.prototype
obj
classFunction
null
迭代版本:
/** * @param {any} obj - 需要检查的对象 * @param {any} classFunction - 需要检查的类 * @return {boolean} - 如果 obj 是 classFunction 的实例,则返回 true,否则返回 false */ var checkIfInstanceOf = function(obj, classFunction) { // 如果 obj 或 classFunction 是 null 或 undefined,那么我们可以直接返回 false if ( obj === null || obj === undefined || classFunction === null || classFunction === undefined ) { return false } // 使用 while 循环遍历 obj 的原型链 while (obj.__proto__) { // 如果 obj.__proto__ 等于 classFunction.prototype,那么 obj 是 classFunction 的实例 if (obj.__proto__ === classFunction.prototype) { return true } // 将 obj 设置为它的原型,然后继续循环 obj = obj.__proto__ } // 如果遍历完整个原型链都没有找到 classFunction.prototype,那么 obj 不是 classFunction 的实例 return false };
递归版本:
/** * @param {any} obj - 需要检查的对象 * @param {any} classFunction - 需要检查的类 * @return {boolean} - 如果 obj 是 classFunction 的实例,则返回 true,否则返回 false */ var checkIfInstanceOf = function(obj, classFunction) { // 如果 obj 或 classFunction 是 null 或 undefined,那么我们可以直接返回 false if ( obj === null || obj === undefined || classFunction === null || classFunction === undefined ) { return false } // 如果 obj.__proto__ 等于 classFunction.prototype,那么 obj 是 classFunction 的实例 if (obj.__proto__ === classFunction.prototype) { return true } // 如果 obj.__proto__ 不等于 classFunction.prototype,那么我们递归地检查 obj.__proto__ 是否是 classFunction 的实例 return checkIfInstanceOf(obj.__proto__, classFunction) };
这两种解法都可以处理各种类型的值和类,包括原始类型的值和它们的包装对象,以及自定义的类和它们的实例。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
原题链接:
https://leetcode.cn/problems/check-if-object-instance-of-class/
解题思路:
我们可以使用 JavaScript 的原型链来检查一个对象是否是一个类的实例。在 JavaScript 中,每个对象都有一个内部属性
[[Prototype]]
,可以通过__proto__
属性来访问。一个对象的__proto__
属性指向了创建它的构造函数的prototype
属性。因此,我们可以通过比较obj.__proto__
和classFunction.prototype
是否相等来检查obj
是否是classFunction
的实例。如果不相等,我们就将obj
设置为obj.__proto__
,然后继续比较,直到obj.__proto__
为null
。迭代版本:
递归版本:
这两种解法都可以处理各种类型的值和类,包括原始类型的值和它们的包装对象,以及自定义的类和它们的实例。
The text was updated successfully, but these errors were encountered: