JavaScript 数据类型
基本数据类型和引用数据类型
ECMASciprt包括两个不同类型的值:基本数据类型和引用数据类型。- 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。
- 把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。
常见的基本类型:
Number、Boolean、String、null、undefined、Symbol(ES6新增)、BigInt(ES2020)
引用类型:
Object(对象)、Array(数组)、Function(函数)、RegExp(正则)、Date(日期)、Map(键值对)
如何判断数据类型
typeof判断
typeof 运算符返回一个字符串,表示操作数的类型。number、string、boolean、object、undefined、function。typeof可以对基本类型number、string、boolean、undefined做出准确的判断(null除外,typeof null==="object",这是由于历史的原因)对于引用类型,除了function之外返回的都是object。
1 | console.log(typeof 123); // "number" |
instanceof判断
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
语法
1 | object instanceof constructor |
例子
1 | const arr = [1, 2, 3]; |
注意:instanceof运算符只能用于对象,不适用原始类型的值,且大小写不能错。
请看下面例子:
1 | "hello world" instanceof String // false |
constructor 判断
constructor 指向创建该实例对象的构造函数
注意 null 和 undefined 没有 constructor,以及 constructor 可以被改写,不太可靠
1 | const arr = [1, 2, 3]; |
为了规范,在重写对象原型时一般都需要重新给constructor赋值,以保证实例对象的类型不被改写。
Object.prototype.toString()
toString() 方法返回一个表示该对象的字符串。
适用于所有类型的判断检测,注意区分大小写. toString(),在Object原型上返回数据格式,
toString()是Object原型对象上的一个方法,该方法默认返回其调用者的具体类型,严格的讲,是toString()运行时this指向的对象类型, 返回的类型格式为[object, xxx],xxx是具体的数据类型,其中包括:String, Number, Boolean, Undefined, Null, Function, Date, Array, RegExp,Error, HTMLDocument…, 基本上所有对象的类型都可以通过这个方法获取到。
1 | Object.prototype.toString.call(`Hello World`); // `[object String]` |