博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中几种判断数据类型的方法
阅读量:5940 次
发布时间:2019-06-19

本文共 1268 字,大约阅读时间需要 4 分钟。

JS中几种不同判断数据类型的方法

数据类型种类

  • 原始数据类型:Null Undefined String Number Boolean
  • 引用数据类型:Object
    在JavaScript中,应用数据类型都时继承自Object,比如JS本身提供的Array, RegExp, Date等等。另外还有JS使用者自己构造的类。

typeof

typeof表达式返回字符串,其值有7中类型:'string' 'number' 'boolean' 'undefined' 'object' 'function' 'symbol'

  • 对于原属数据类型:Number, Undefined, Number, Boolean 能够返回正确的值,因此判断这些类型时使用typeof表达式式比较方便的。例:typeof('aaaa') === 'string' 返回值为true
  • 对于原始数据类型:Null 返回的值是 'object' ,显然是无法判断Null数据类型的
  • 对于引用数据类型:返回的值都是'object' ,所以无法判断Array Date等数据类型

instanceof

A instanceof B从字面理解就是,A是B的实例,所以它判断的就是对象类型。比如[1] instanceof Array返回值为true。

但是,[1] instanceof Object返回值也是true,这是因为,[1]虽然是有Array构造,但是也是Object的实例。

Object.prototype.toString.call

返回字符串以下格式:[object Object],其中后面的Object对应为实例的构造函数,例如:

  • Object.prototype.toString.call([]) 返回 '[object Array]'
  • Object.prototype.toString.call([]) 返回 '[object Date]'
    但是这个方法之对于JS本身的数据类型有效,对于自定义的类型无用,因为返回值都是'[object Object]'比如:
function Car(color) {    this.color = color;};function MiniCar(color) {    Car.call(this, color)}MiniCar.prototype = Car.prototype;MiniCar.prototype.constructor = MiniCar;var miniCar1 = new MiniCar('red');Object.prototype.toString.call(miniCar1);   // '[object Object]'

访问实例constructor属性

通过直接访问实例的contructor属性,可以的到该数据的来自于那个构造函数,从而得到准确数据类型。

转载于:https://www.cnblogs.com/ykli/p/9694179.html

你可能感兴趣的文章
CentOS 7.0系统安装配置图解教程
查看>>
zabbix监控系统的安装与配置
查看>>
Linux下杀毒软件Clamav的安装和使用
查看>>
CentOS6.5上源码安装MongoDB3.2.1
查看>>
centos5.8 安装配置vsftp虚拟用户
查看>>
海量大数据处理最新面试题-1
查看>>
dubbo学习之dubbo管理控制台装配及集成zookeeper集群部署(1)【转】
查看>>
APKTOOL编译出现“entry index is larger than available symbols” <index ,total symbols> 的研究...
查看>>
高拍仪是否支持TWAIN方式的测试方法
查看>>
Jquery加载dom元素
查看>>
VIM 命令使用大全
查看>>
MYSQL注入
查看>>
Linux 命令 sudo 用法及配置解析
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
VS2010没有Intellisense(智能感知)的解决办法
查看>>
Python中对象是否可以迭代iterable
查看>>
整理oracle 树形查询
查看>>
分享几个vs code 的几个插件
查看>>
Linux下使用Apache实现域名转发(Tomcat/JBOSS)
查看>>