js:判断数据类型的几种方法

article/2025/10/19 13:34:07

参考文章:JavaScript中判断对象类型的几种方法总结

根据要判断的数据对象,来选用合适的方法

1、原始数据类型

6种:number、string、boolean、undefined、null、symbol

一、typeof

let str = 'hello';
console.log(typeof str);	// string

【特殊!!】null的类型判断,不能使用typeof、instanceof、constructor
let s = null; console.log(typeof s) //Object

下面是两种判断是否为null类型的方法:
console.log(s === null)
console.log(Object.prototype.toString.call(s) === '[object Null]');

2、对于部分引用数据类型:object、function,也可以使用typeof

let obj = {}
console.log(typeof obj);	// object
function func(){return 'this is a function';
}
console.log(typeof func);	// function

3、对于其他的引用数据类型:Array、Date、RegExp

typeof有局限性:对于第3种情况中列举的部分引用数据类型,使用typeof只能显示object,而不会显示具体的Array。【不能用来区分:一种对象类型和另一种对象类型】

let arr = [1,2,3,4];
console.log(typeof arr); // object,此时就不能typeof了

二、instanceof

let arr = [1,2,3,4];
console.log(arr instanceof Array);	// true

instanceof 运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字或构造函数。如果 object 是 class 或构造函数的实例,则 instanceof 运算符返回 true。如果 object 不是指定类或函数的实例,或者 object 为 null,则返回 false。

let str = 'hello';
console.log(str instanceof String); // false

三、constructor属性

let arr = [1,2,3,4];
console.log(arr.constructor);	// ƒ Array() { [native code] },引用了初始化该对象的构造函数
console.log(arr.constructor === Array);	// truelet date = new Date();
console.log(typeof date);	// object
console.log(date.constructor);	// Date
let reg = new RegExp("/^/d*$/") ; 	
console.log(typeof reg);	// object
console.log(reg.constructor);	// RegExp

补充:到底什么是JS原型

原型对象中的constructor属性,指向构造函数

【思考】:第三、四种方法之间,是不是有什么联系?
arr是原型对象还是实例对象?

4、对于跨框架

下面这段话大家自行领悟一下,我也不是很懂
在这里插入图片描述

四、Object.prototype.toString()

参考:JavaScript 中 call()、apply()、bind() 的用法

call()是用来改变this指向的,同理可以使用apply、bind

【注意】:bind返回的是一个新的函数,需要再调用一次

let arr = [1,2,3,4];
console.log(Object.prototype.toString.call(arr));	// [object Array]
console.log(Object.prototype.toString.call(arr) === "[object Array]");console.log(Object.prototype.toString.apply(arr));	
console.log(Object.prototype.toString.apply(arr) === "[object Array]");
console.log(Object.prototype.toString.bind(arr));	// ƒ toString() { [native code] }
console.log(Object.prototype.toString.bind(arr)());	//[object Array]
console.log(Object.prototype.toString.bind(arr)() === "[object Array]");

最后

注意:为了描述直观,文中出现了一个变量多次let声明的情况,在代码中,用let声明的变量只能声明一次,否则会报错,但后续可以修改变量值


http://chatgpt.dhexx.cn/article/OIFiYnGa.shtml

相关文章

JS判断数据类型的几种方式

JS中常见的几种数据类型 基本类型:string、boolean、number特殊类型:undefined和null3、引用类型:Array、Date、RegExp… typeof typeof检测基本数据类型时没有问题,但是当其对引用类型进行检测时,会返回object&…

js 精确判断对象的类型

在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。 对于数组、函数、对象来说,其关系错综复杂&#xff0c…

JavaScript——判断js数据类型(类型检测)

判断js数据类型,也就是我们说的类型检测,本文提供五种方法,分别是typeof运算符、instanceof操作符、Object.prototype.toString方法、constructor属性、duck type。 1、typeof运算符 typeof算是最常见的了,使用它会返回一个字符…

js判断数据类型常用的6种方法

js判断数据类型常用的方法,不论在开发中开始在面试中,都是经常遇到的问题,尤其是在面试时,当面试官问及js判断数据类型的方法时,回答的越多,说明掌握的广度跟深度越多,感觉自己逼格也越高.废话不多说了,进入正题 常见的判断js数据类型的方法有如下几种 1.最常见的判断方法&am…

js判断数据类型的几种方法

第一种:Object.prototype.toString()方法: 注意这里是Object原型对象上的toString方法才能判断,其他原型对象上的不能判断,如 Array原型对象上的toString方法是判断不了的,因为它重写了toString方法。 要使用Object…

js判断数据类型(全)

js基本数据类型 基本数据类型: String、Number、Boolean、Undefined未定义、null空、symbol表示独一无二的值(es6引入的新的原始数据基本类型)。 Number:返回的特殊值NaN,表示不是数值,用于表示本来要返回…

判断JS数据类型的五种方法

JavaScript 中常见的几种数据类型: 目录 JavaScript 中常见的几种数据类型: 一、分类 二、判断 1、typeof null既然属于基本数据类型,为什么用typeof返回的是object呢? js小数运算出现的问题(精度丢失) 解决方法一 解决方…

Linux 文件类型及常用命令(2)(cp、mv、cat、more、less、head、tail、chmod、getenforce)

1、命令 cp:拷贝(类似于Windows系统的复制,但区别是可以重命名) 拷贝文件、目录(需要使用 -r 参数),可以重命名。 2、命令 mv:移动或重命名 ①如果是在当前目录下移动&#xff0c…

Linux验证SELinux状态

安全增强型Linux(SELinux)是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制。记录操作如何验证SELinux,并且避免系统无法启动的问题。 以root权限执行:sudo su - 运行命令getenforce,验证SELi…

Linux 查看 SELinux 的状态

可以运行下面的命令来查看当前服务配置的 SELinux 的状态。 getenforce 上面的输出状态显示了当前 SELinux 的配置状态。 如果上图显示当前的状态。 临时禁用 SELinux 。 使用下面的命令来临时禁用 SELinux。 setenforce 0 Linux 查看 SELinux 的状态 - 系统和容器 - OSSE…

Android Senlinux 基础说明

一、SELinux 三种模式简介 Enforcing:强制模式。代表SELinux在运行中,且已经开始限制domain/type之间的验证关系Permissive:宽容模式。代表SELinux在运行中,不过不会限制domain/type之间的验证关系,即使验证不正确&…

如何关闭防火墙和selinux操作

在每次部署相关软件的时候总是会遇到各种奇奇怪怪的问题,多半是防火墙没有关,或者是selinux没有关 如何关闭防火墙: 那先来看一下防火墙的状态:systemctl status firewalld 如果是下图所示开着的,那就把它给关了&am…

Linux下如何关闭SELinux的图文教程(完整版)

大家好! 最近遇到Mysql数据启动报错的问题,于是发现是因为SELinux没有关闭,那么这篇文章就简单的记录SElinux是如何让关闭的。 前言 SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现…

Android8.x/9.x/10.x user版本关闭selinux以及打开UART控制台输入和关闭内核日志输出功能

1、user版本关闭selinux 仅限于系统调试时使用,量产版本需要将其设置回去成ELINUX_ENFORCING模式。 1.1)背景 C:\Users\zhaojr> adb root C:\Users\zhaojr> adb remount C:\Users\zhaojr> adb shell ac8257:/ # getenforce getenforce Enforcing这个表明…

GeForce Experience 绕过登录与禁止自动更新

本文说明了,如何在未注册Nvidia账户的情况下,绕过GeForce Experience(以下简称为GFE)账户登录的方法,从而直接使用登陆后才能使用的各种功能。在PC未联网的情况下,此方法依旧能正常绕过登录,直接…

adb shell getenforce/setenforce(三级命令)

adb shell getenforce adb shell setenforce

PyTorch官方教程(中文版)

PyTorch官方教程(中文版) TENSOR概述初始化向量对Tensor的操作转移存储位置到GPU张量的切片操作张量的合并操作张量乘法将单元素tensor转换为基本数据类型 与NumPy的联系tensor转numpynumpy转tensor DATASETS & DATALOADERS载入数据集迭代和可视化数…

pytorch基础教程(目标检测)

文章目录 1 python ;两大法宝函数2 加载数据3 TensorBoard 的使用4 transforms的使用5 torchvision中的数据集使用6 dataloader的使用7 卷积操作8 卷积层9 最大池化10 非线性激活11 线性层12 Sequential的使用13 损失函数14 优化器15 现有网络模型的使用及修改16 网…

总结 | 深度学习之Pytorch入门教程

目录 一、整体学习的建议 1.1 如何成为Pytorch大神? 1.2 如何读Github代码? 1.3 代码能力太弱怎么办? 二、Pytorch与TensorFlow概述 2.1 什么是Pytorch? 2.1.1 Pytorch两个核心模块 2.1.2 Pytorch可视化:Visdom 2.1.3 Pyt…

面向Windows的Pytorch完整安装教程

目录 1. 概述 2. 安装 2.1 安装cuda 2.2 安装cudnn 2.3 安装Pytoch 2.4 验证 1. 概述 PyTorch是一个开源的Python机器学习库,其前身是著名的机器学习库Torch。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyT…