javascript数据类型
基本数据类型(6种)
Number、Boolean、String、Null、Undefined、Symbol
引用类型(3种)
Function、Object、Array
基本数据类型的特点:
1)值不可变
2)比较是值得比较
3)存放在栈区
引用类型的特点:
1)值是可变的,拥有属性和方法
2)比较是引用的比较
3)同时存放在栈区和堆区
两种类型的比较:
存放位置:基本类型存放在栈区,引用类型存放在堆区
访问方式:基本类型按照值访问,引用类型按照引用访问
检测数据类型的方法:(5种)
1、严格运算符 ===
这种方式只能用来检测null和undefined
2、typeof
typeof 不能用来检测null和数组
typeof null 和typeof ["a"] 返回的值都是object
3、Object.prototype.toString.call()
这个是比较常用的检测方式,也是比较准确的数据检测的方法,这种方法可以检测出所有的类型。
注意:正常情况下,我们的每种数据类型都有toString()方法,都是将调用的主题单独的转换成字符串的形式:如下图
对象的toString()方法返回的是"[object Object]" 这个东西,第一个值是固定的,第二个值是你调用的主体的构造函数。
4、instanceof 方法 (判断一个值是不是对应的构造函数的实例)
缺点:
1、不能用字面量的东西来判断,只能通过标准的构造函数创建实例的方式来创建
2、不能用来判断null和undefined的类型(因为Null 和Undefined类被浏览器给屏蔽了)
3、这个的判断是不准确的。因为只要在原型链上的都会是true,因为他会沿着原型链向上查找,只要在原型链上找到一个构造函数==需要判断的构造函数,就会返回true
5、constructor
constructor类似于instanceof
缺点:
1、不能区分null 和undefined
2、万一进行了prototype的更改,这个值就会出现差错
例如继承