检查是否是类的对象实例

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

请你编写一个函数,检查给定的值是否是给定类或超类的实例。

可以传递给函数的数据类型没有限制。例如,值或类可能是 undefined 。

示例 1:

输入:func = () => checkIfInstance(new Date(), Date)
输出:true
解释:根据定义,Date 构造函数返回的对象是 Date 的一个实例。

示例 2:

输入:func = () => { class Animal {}; class Dog extends Animal {}; return checkIfInstance(new Dog(), Animal); }
输出:true
解释:
class Animal {};
class Dog extends Animal {};
checkIfInstanceOf(new Dog(), Animal); // trueDog 是 Animal 的子类。因此,Dog 对象同时是 Dog 和 Animal 的实例。

示例 3:

输入:func = () => checkIfInstance(Date, Date)
输出:false
解释:日期的构造函数在逻辑上不能是其自身的实例。

示例 4:

输入:func = () => checkIfInstance(5, Number)
输出:true
解释:5 是一个 Number。注意,"instanceof" 关键字将返回 false。

解题思路

首先会检查 obj 是否为 undefined 或 null,如果是,则直接返回 false。

接下来,函数会通过循环遍历对象的原型链,判断对象的构造函数是否与 classFunction 相等。如果相等,表示 obj 是 classFunction 的一个实例,函数返回 true。

如果遍历完整个原型链都没有找到匹配的构造函数,则表示 obj 不是 classFunction 的实例,函数返回 false。

这个函数可以用来判断一个对象是否是某个类的实例,可以在 JavaScript 中进行类型检查或判断对象的继承关系。

AC代码

/*** @param {any} object* @param {any} classFunction* @return {boolean}*/
var checkIfInstanceOf = function (obj, classFunction) {if (obj === undefined || obj === null) return false;while (obj !== null) {if (obj.constructor === classFunction) return true;obj = Object.getPrototypeOf(obj);}return false;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习之网络编程3(高并发服务器)

写在前面 Linux网络编程我是看视频学的,Linux网络编程,看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题: 根据上一个笔记,我们可以写出一个简单的服务端…

52. N 皇后 II

这道题我认为关键是建立好行列之间的数组col,表示第i行第col[i]列 i从0到n-1开始遍历(已经保证了不同行),在每次遍历中判断每一列(相当于判断这一行中,皇后应该放在哪一列) 判断函数valid的规…

七、HorizontalPodAutoscaler(HPA)

目录 一、HPA概述: 二、HPA工作机制: 三、HPA流程: 四、HPA API对象: 五、示例: 1、基于CPU的HPA 2、常见问题: 3、基于内存的HPA 一、HPA概述: Horizontal Pod Autoscaler,中文就是水平自动伸缩可…

【洛谷千题详解】P7072 [CSP-J2020] 直播获奖

输入样例&#xff1a; 10 60 200 300 400 500 600 600 0 300 200 100 输出样例&#xff1a; 200 300 400 400 400 500 400 400 300 300 #include<bits/stdc.h> using namespace std; int main() {int n,w,s,a[605]{0};cin>>n>>w;for(int i1;i<n;i){sca…

Java Math类库 | 算法实用总结 | 蓝桥杯java组备赛

Java Math类是Java标准库中的一个数学计算类&#xff0c;可以为我们在算法应用中提供很大的帮助。 且由于Math类中的方法都是静态的&#xff0c;因此可以直接通过类名调用&#xff0c;而不需要创建Math类的实例。使用起来十分便捷&#xff0c;下面列出Math中各函数、常量的使用…

【MySQL】数据处理之增删改

文章目录 一、增加&#xff08;插入&#xff09;INSERT INTO...VALUES(...,...)VALUES的方式添加情况一&#xff1a;为表的所有字段按默认顺序插入数据情况二&#xff1a;为表的指定字段插入数据情况三&#xff1a;同时插入多条记录 将查询结果插入到表中 二、修改&#xff08;…

AcWing 843. n-皇后问题

#include <iostream> #include <cstring> #include <algorithm>using namespace std; const int N 10; int n; int col[N], dg[N N], rdg[N N]; // 列占用// 正对角线占用// 副对角线占用 char table[N][N]; // 棋盘void dfs(int index) {if(i…

彻底理解字符编码

一、前言 为什么要进行编码&#xff0c;这些编码的关系如何&#xff0c;如ASCII&#xff0c;IOS-8859-1&#xff0c;GB2312&#xff0c;GBK&#xff0c;Unicode之间的关系&#xff0c;笔者想要彻底理解字符编码背后的故事&#xff0c;遂进行了探索&#xff0c;具体笔记如下。如…

“绿智中国”亚洲绿色数字生态发展论坛暨中泰基业集团2024产品发布会在渝举行

绿智中国&#xff0c;逐梦未来。2024年1月11日-12日&#xff0c;“绿智中国”亚洲绿色数字生态发展论坛暨中泰基业集团2024产品发布会在重庆盛大举行。以“以数字化引领绿色化&#xff0c;以绿色化带动数字化”为主题&#xff0c;共同见证“绿智中国”崛起的力量。 为积极响应《…

目标检测-One Stage-YOLOv7

文章目录 前言一、YOLOv7的不同版本二、YOLOv7的网络结构二、YOLOv7的创新点三、创新点的详细解读ELAN和E-ELANBoF训练技巧计划型重参化卷积辅助训练模块标签分配Lead head guided label assignerCoarse-to-fine lead head guided label assigner 基于级联模型的复合缩放方法 总…

【MySQL】子查询 综合练习

题目&#xff1a; #1.查询和Zlotkey相同部门的员工姓名和工资#2.查询工资比公司平均工资高的员工的员工号&#xff0c;姓名和工资。#3.选择工资大于所有JOB_ID SA_MAN的员工的工资的员工的last_name, job_id, salary#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和…

canvas设置圆锥形渐变

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

隧道应用4-内网穿透EW的简单使用

与netsh端口映射内网类似&#xff0c;也是通过跳板机实现 EW官网地址&#xff1a;http://rootkiter.com/EarthWorm EW 是一套便携式的网络穿透工具&#xff0c;具有 SOCKS v5服务架设和端口转发两大核心功能&#xff0c;可在复杂网络环境下完成网络穿透。 注&#xff1a; 考虑…

【MATLAB源码-第111期】基于matlab的SCMA系统误码率仿真,采用polar码编码,输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 SCMA&#xff08;Sparse Code Multiple Access&#xff09;系统是一种先进的多用户多输入多输出&#xff08;MU-MIMO&#xff09;通信系统&#xff0c;它采用了一种独特的多址访问技术&#xff0c;旨在提高无线通信网络的效率…

Ubuntu 22.04 Cron使用

需要定时处理的场景还是比较多的&#xff0c;比如信息推送、日志清理等。 这篇文章我们来说说如何使用cron来实现定时处理&#xff0c;以及监控任务的执行。 使用 Ubuntu中使用cron&#xff0c;要用到的命令是crontab。不加sudo时&#xff0c;处理的是个人的定时任务。当加上…

STEGNN

STEGNN 摘要 随着智能交通系统(ITS)逐渐融入我们的日常生活,人们普遍认为路网预测是智能交通系统的杀手锏,具有很高的社会和经济效益。然而,目前的解决方案忽视了时空交通数据的异质性,无法捕捉隐藏的时空相关性。本文介绍了 STEGNN:一种用于路网预测的新型时空嵌入图神…

Java控制结构解析

在 Java 编程语言中&#xff0c;控制结构用于控制程序的执行流程。以下是几种常见的控制结构及其解析&#xff1a; 条件语句&#xff08;If-else 语句&#xff09;&#xff1a;根据条件的真假来执行不同的操作。Switch 语句&#xff1a;根据一个表达式的值&#xff0c;选择不同…

让Windows上vscode的C语言scanf函数可以读取中文字符

windows的默认字符集保存为GBK不要修改 区域设置–时钟和区域–区域–管理–更系统区域设置–&#xff08;不要勾选&#xff09;使用UTF-8。 查看验证当前字符集&#xff1a; cmdchcp 活动代码页: 936936就是简体中文GBK vscode的setting.json文件添加如下代码 点击左下角…

P4学习(一) 环境搭建

系列文章目录 第一章 P4学习入门之虚拟机环境搭建 文章目录 系列文章目录前言一、P4是什么&#xff1f;二、搭建步骤1.下载虚拟机镜像2.虚拟机管理软件载入镜像2.1 找到你镜像的所在位置2.2 打开VMware Workstation2.3 载入镜像 3.检验环境是否配置成功 P4 的真机环境搭建 前言…

js map方法的使用

在 JavaScript 中&#xff0c;map() 方法是数组对象的一个内置方法&#xff0c;用于对数组中的每个元素执行指定的操作&#xff0c;并返回一个新的数组&#xff0c;该数组包含了操作后的结果。 map() 方法接受一个回调函数作为参数&#xff0c;该回调函数会被应用于数组中的每…