js检测数据类型方式(typeof instanceof Object.prototype.toString.call())

typeof

使用 typeof 检测数据类型,首先返回的都是一个字符串,其次字符串中包含了对应的数据类型;

缺点:

  • typeof null === "object"
  • 不能具体细分是数组、正则还是对象中其他值,使用 typeof 检测数据类型对于对象数据类型中的值返回结果都是"object"

总结:主要用来检测基本类型值(除null)和函数类型值;

instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

复制代码
object instanceof constructor

object为实例对象,constructor为构造函数

构造函数通过new可以实例对象,instanceof能判断这个对象是否是之前那个构造函数生成的对象

  • instanceof 检测某一个实例是否属于某个类;
  • 不能用来处理字面量方式创建出来的基本数据类型值 ,对于基本数据类型来说,字面量方式创建出来的结果和实例方式创建出来的结果是有区别的。严格意义上来说只有实例创建出来的结果才是标准的对象数据类型值,字面量方式创建出来的基本数据类型值,是不严谨的实例,
    instanceof 特性,只要在当前实例的原型上,检测出来的结果都是 true

Object.prototype.toString.call()

toString() 方法返回一个表示该对象的字符串。

对象中的 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString() 方法被每个 Object 对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",

相关推荐
李慕婉学姐11 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
XTTX11012 小时前
Vue3+Cesium教程(36)--动态设置降雨效果
前端·javascript·vue.js
奋进的芋圆13 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin13 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model200513 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉13 小时前
JavaBean相关补充
java·开发语言
提笔忘字的帝国14 小时前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
2501_9418824814 小时前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
han_14 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
華勳全栈14 小时前
两天开发完成智能体平台
java·spring·go