首页 > 其他分享 >面试必考的 3 种类型检测方法,分享给你

面试必考的 3 种类型检测方法,分享给你

时间:2024-03-12 19:30:00浏览次数:24  
标签:prototype object Object 必考 面试 toString typeof call 分享

如果现在给你一个变量,你能快速检测出是哪种类型么?

1. 检测基本类型

typeof 是一个用于检测数据类型的操作符,返回一个表示数据类型的字符串。

可以用于检测数字、字符串、布尔等基本数据类型:

typeof 42;          // "number"
typeof "Hello";     // "string"
typeof true;        // "boolean"
typeof undefined;   // "undefined"
typeof null;        // "object" (历史遗留问题)
typeof {};          // "object"
typeof [];          // "object"
typeof function(){}; // "function"

发现了没有,对于对象和数组这种引用类型,typeof都返回了object,区分不了到底是哪种类型。

2. 检测引用类型

instanceof 操作符用于检测对象的类型,通常用于检测一个对象是否是某个类的实例。

var arr = [];
arr instanceof Array; // true

var obj = {};
obj instanceof Object; // true

3. 通用方法

有没有一种方法,既能判断基本类型,还能判断引用类型呢?

有~

 Object.prototype.toString.call() 方法会返回一个描述对象内部类型的字符串。

Object.prototype.toString.call(42);        // "[object Number]"
Object.prototype.toString.call("Hello");   // "[object String]"
Object.prototype.toString.call(true);      // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null);      // "[object Null]"
Object.prototype.toString.call({});        // "[object Object]"
Object.prototype.toString.call([]);        // "[object Array]"

其中 "[object " 和 "]" 之间的部分就是具体的数据类型字符串。

你可以使用一些字符串操作方法来获取具体的数据类型。

举个例子:

var value = [1, 2, 3];

// 使用 Object.prototype.toString.call() 获取类型信息字符串
var typeString = Object.prototype.toString.call(value);

// 从字符串中提取具体的数据类型
var dataType = typeString.substring(8, typeString.length - 1);

console.log(dataType); // "Array"

4. 总结

简要总结每种方法的使用场景和限制。

  • typeof 适用于基本数据类型,但对于对象和数组的检测不够精准。

  • instanceof 适用于检测对象的实例关系。

  • Object.prototype.toString.call() 是一种通用的方法,适用于各种情况。

标签:prototype,object,Object,必考,面试,toString,typeof,call,分享
From: https://blog.csdn.net/qq_30094821/article/details/136633523

相关文章

  • 【专题】2024“破次元”数字社交文化观察报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35351原文出处:拓端数据部落公众号渴望财富自由带来生活重压,千万高校毕业生面临职场高标准,焦虑情绪凸显。Z世代虽独立,仍渴求亲密关系,多数独生子女依赖自我决策,同时渴望成为父母依靠。他们钟爱线上社交,日均手机使用超8小时,享受其带来的安全自由与个......
  • 分享8款高效办公软件,让你准时下班
    在现代职场中,办公软件已经成为我们日常工作中不可或缺的一部分。选择适合自己、高效且实用的办公软件,能大大提升我们的工作效率,从而帮助我们更好地平衡工作与生活。今天给大家分享8款高效办公软件,让你准时下班成为可能。 01、Everything 对于经常需要处理大量文件的用户来说......
  • Java集合面试高频问题---集合框架体系(3)
    HashMap源码分析HashMap常见属性扩容默认为数组容量加载印子即160.75put方法put添加数据流程图每次添加数据之后都判断是否需要扩容......
  • 【2024面试刷题】二、Spring Cloud 面试题之Hystrix
    1、springcloud断路器的作用是什么?答:当一个服务调用另一个服务由于网络原因或自身原因出现问题时,调用者将等待被调用者的响应当更多的服务要求这些资源导致更多的请求等待时,就会出现连锁效应(雪崩效应)。断路器完全打开:一段时间内达到一定次数不能调用并且多次监测无恢复迹象......
  • 面试中超详细的HTTP状态码
    一状态码定义 二遵守的规范 200一定是正确。所有异常都不使用200返回码业务逻辑上的错误,有特别的错误码尽量使用4xx,否则使用400。服务器端内部错误,无特别错误码使用500。业务异常时,返回内容使用JSON格式定义error信息。......
  • 轻松驾驭Python格式化:5个F-String实用技巧分享
    F-String(格式化字符串字面值)是在Python3.6中引入的,它是一种非常强大且灵活的字符串格式化方法。它允许你在字符串中嵌入表达式,这些表达式在运行时会被求值并转换为字符串,这种特性使得F-String在编写Python代码时能够更简洁、更直观地处理字符串。本文总结了5个实用的F-String技......
  • 【专题】中国医疗AI市场发展专题分析报告PDF合集分享(附原数据表)
    全文链接:https://tecdat.cn/?p=33290原文出处:拓端数据部落公众号在克服价值验证滞后的情况下,医疗人工智能(AI)正迎来迅猛发展。到2022年,医疗AI市场规模首次突破百亿,预计在未来3-5年将持续保持40%的高增长率。过去的主要原因包括缺乏信任、商业路径不明确以及临床价值不足,但是现在......
  • 面试官:说说线程池的工作原理?
    线程池的底层是基于线程和任务队列来实现的,创建线程池的创建方式通常有以下两种:普通Java项目,使用ThreadPoolExecutor来创建线程池,这点《阿里巴巴Java开发手册》中也有说明,如下图所示:Spring项目中,会使用代码可读性更高的ThreadPoolTaskExecutor来创建线程池,虽然它的......
  • 通用响应类分享
    ---转载请标注出处 /***@Author:liuzhiyuan*@Create:2024/1/11*Description:响应封装*/@Data@ToStringpublicclassResponseBean<T>implementsSerializable{privatestaticfinallongserialVersionUID=1L;privatelongtimestamp;private......
  • uniapp封装公共分享方法
    使用mixins封装分享方法创建share.jsimporturlConfigfrom"@/utils/urlConfig";exportconstshareMixins={data(){return{shareData:{title:'',//分享内容的标题path:'',//分享内容跳转......