js判断数据类型的方式详解(面试题)

news2025/1/16 16:10:35

一.typeof

1.用来判断基本数据类型

null、Object、String判断的结果都为object

二.instanceof

检测构造函数的 prototype 属性是否在某个实例对象的原型链上

不能判断简单数据类型,只能判断复杂数据类型。

复杂数据类型的具体类型不一定判断正确。

手写instanceof

function myInstanceof(source, target) {
  // 获取需要判断对象的原型
  let proto = Object.getPrototypeOf(source); 
  // 获取构造函数的 prototype 对象
  let prototype = target.prototype; 

  // 判断构造函数的 prototype 对象是否在对象的原型链上
  while (true) {
     if (!proto) return false; //尽头Object.prototype.__proto__ = null

     if (proto === prototype) return true;

     proto = Object.getPrototypeOf(proto); 
   }
}

三.constructor

与js代码的执行机制有关。在一个函数定义时,js会给这个函数添加一个prototype对象(原型对象),之后在原型对象上添加一个constructor属性并指向函数的引用。当函数作为构造函数创建对象时,新创建的对象的原型对象的constructor会继承构造函数的原型对象的constructor。

四.Object.prototype.toString.call()

Object对象,直接调用toString()就能返回[object Object]

其他对象,则需要通过call、apply来调用才能返回正确的类型信息

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

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

相关文章

[软件下载]解决copperliasim(原v-rep)的教育版无法下载的问题

前言 v-rep(现在叫做copperliasim,但是v-rep字数比较少,并且叫的人也比较多,故下文皆称vrep)是一款优秀的机器人仿真软件,在国内似乎用的人不多,但是国外据说还是比较流行的。 目前或许有不少的朋友在下载…

数的种类 -bitset的应用

很容易想到下面的DP dp&#xff08;i&#xff0c;j&#xff09; 考虑前i个数字看是否能构成j for(int i1;i<n;i)for(int j5e5;j>a[i];j)dp[j]|dp[j-a[i]]; 发现会超时 引入bitset优化 可以让原来的复杂度除以64 是一个经典的冲暴力的手段 #include<bits/stdc.h>…

matlibplot绘图设置标签角度

如下图所示&#xff0c;当我们绘图的时候有时候会遇到标注太长显示不全&#xff0c;这时候需要修改标注的角度来实现&#xff1a; **plt.xticks(rotation70)**设置x轴旋转70度 import matplotlib.pyplot as plt import numpy as np CHN[13.6081.06**i for i in range(1,31)] U…

百度AICA首席AI架构师培养计划第七期毕业,大模型深入产业见成果

10月28日&#xff0c;由深度学习技术及应用国家工程研究中心与百度联合创办的 AICA 首席AI架构师培养计划&#xff0c;迎来第7期毕业典礼&#xff0c;88位学员获得AI架构师认证。截至目前&#xff0c;AICA已累计为业界培养了410位产业AI领军人才。同时&#xff0c;AICA第7期毕业…

光环云出席国际数据经济产业合作大会,成为国际数据经济产业园首批生态合作企业

光环云作为临港新片区国际数据港全球云算服务生态合作伙伴受邀出席会议&#xff0c;与跨境数科等单位共同参与共建国际数据港启动仪式&#xff0c;光环云执行董事兼CEO吴曼以《AGI-x时代跨境数据流动》为主题作主旨演讲。 10月27日&#xff0c;国际数据经济产业合作大会在临港新…

史上最短苹果发布会;三星、LG、高通联手进军 XR 市场丨 RTE 开发者日报 Vol.74

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

CVE-2023-1698:WAGO系统远程代码执行漏洞复现

文章目录 WAGO系统远程代码执行漏洞(CVE-2023-1698)复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 WAGO系统远程代码执行漏洞(CVE-2023-1698)复现 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术…

六、W5100S/W5500+RP2040树莓派Pico<UDP Server数据回环测试>

文章目录 1. 前言2. 协议简介2.1 简述2.2 优点2.3 UDP Server的步骤2.4 应用 3. WIZnet以太网芯片4. UDP Sever回环测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 UDP是一种无连接的网络协议&#xff0c;它提供了一种简…

MS-NAS

方法 作者未提供代码

EtherCAT的4种寻址方式解析

我们知道&#xff0c;一个EtherCAT数据帧&#xff08;frame&#xff09;里面包含很多个报文&#xff08;datagram&#xff09;&#xff0c;不管是什么样式的报文&#xff0c;它们的目的只有一个&#xff0c;就是读写从站寄存器或内存。所以寻址就是以什么方式访问哪个从站的哪个…

剑指offer(C++)-JZ5:替换空格(算法-其他)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 请实现一个函数&#xff0c;将一个字符串s中的每个空格替换成“%20”。 例如&#xff0c;当字符串为We A…

Mybatis执行流程简析

一、前言 日常工作中&#xff0c;我们用到mybatis的时候&#xff0c;都是写一个Mapper接口xml文件/注解形式&#xff0c;然后就可以在业务层去调用我们在Mapper接口中定义的CRUD方法&#xff0c;很方便&#xff0c;但一直都没有去研究过执行逻辑&#xff0c;下面附一篇我自己研…

在NISQ小型计算机上执行大型并行量子计算的可能性

简介 Steve White提出了密度矩阵重整化群&#xff08;DMRG&#xff09;的基本思想&#xff0c;即纠缠是一种有价值的资源&#xff0c;可以用来精确或近似地描述大量子系统。后来&#xff0c;这一思想被理解为优化矩阵积状态&#xff08;MPS&#xff09;的算法&#xff0c;支持…

组件与Props:React中构建可复用UI的基石

目录 组件&#xff1a;构建现代UI的基本单位 Props&#xff1a;组件之间的数据传递 Props的灵活性&#xff1a;构建可配置的组件 组件间的通信&#xff1a;通过回调函数传递数据 总结&#xff1a; 组件&#xff1a;构建现代UI的基本单位 组件是前端开发中的关键概念之一。…

氮化镓功率HEMT的表征与建模

来源&#xff1a;Characterization and Modeling of a Gallium Nitride Power HEMT(IEEE TRANSACTIONS ON INDUSTRY APPLICATIONS) GaN high-electron-mobility transistor (HEMT) GaN高电子迁移率晶体管   该模型包括一个电压相关电流源Ids、两个电压相关电容Cgd和Cds、一…

UG\NX二次开发 球坐标到直角坐标的转换

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 JiaLiHuiNaoGui 订阅本专栏,非常感谢。 简介 已知角度θ和ϕ,距离d,求P点坐标。 "> 代码 #include "me.hpp" using namespace NXOpen; using namespace std;void GetP<

汽车贴膜店展示服务预约小程序的作用是什么

很多家庭都有车辆&#xff0c;除了车身自带颜色或外观&#xff0c;部分消费者会选择贴车衣、改色膜以及其它装饰类服务&#xff1b;而市场高需求下也促进了商家生意增长。 但随着线上化程度加深&#xff0c;传统线下门店也面临多重困境&#xff0c;品牌需要线上发展获得生意及…

loadsh

官网&#xff08;当前版本4.x&#xff09;Lodash Documentationhttps://lodash.com/docs/4.17.15 简介 Lodash是一个著名的javascript原生库&#xff0c;不需要引入其他第三方依赖。是一个意在提高开发者效率,提高JS原生方法性能的JS库。简单的说就是&#xff0c;很多方法loda…

WorkPlus:领先的IM软件,助力企业高效沟通与协作

随着信息技术的发展&#xff0c;企业内部沟通协作变得至关重要&#xff0c;而IM&#xff08;即时通讯&#xff09;软件成为了企业中不可或缺的工具。在众多IM软件中&#xff0c;WorkPlus凭借其卓越的功能和优质的用户体验&#xff0c;成为了企业首选。 WorkPlus为何备受企业青睐…

一文弄懂Linux信号机制

目录 1.什么是信号&#xff1f; 2.信号实现原理 ​3.信号生命周期 4.信号分类 5.信号常见概念 6.信号阻塞和信号忽略的区别&#xff1f; 1.什么是信号&#xff1f; Linux信号机制是进程间通信的一种方式&#xff0c;用于在不同进程之间传递信息。它通过向目标进程发送一…