js中数据类型分为原始数据类型和对象数据类型,原始数据类型分为数字(int)、字符串(string)和布尔类型(boolean)以及null(空)和undefined(未定义)。对象数据类型包括Object(对象)以及Array(数组)。
js也可分为可有方法类型和不可有方法类型。
js也可分为可变类型和不可变类型。
js中区别数据类型的有几种方式
一、typeof
用法:typeof(表达式或变量),只能区分基本数据类型,无法判断数组和对象(返回的都是Object)
二、instanceof
用法:a instanceof b ,将a和b做对比(可判断指定类型),例:
let a = [2,3,4];
console.log(a instanceof Array)//返回值为true
三、constructor
当一个函数F被定义时,JS引擎会为F添加prototype原型,然后在prototype上添加一个constructor属性,并让其指向F的引用,F利用原型对象的constructor属性引用了自身,当F作为构造函数创建对象时,原型上的constructor属性被遗传到了新创建的对象上,从原型链角度讲,构造函数F就是新对象的类型。这样做的意义是,让对象诞生以后,就具有可追溯的数据类型。
四、Object.propertoy.toString()方法
toString()是Object的原型方法,调用该方法,默认返回当前对象的[[Class]]。这是一个内部属性,其格式为[object Xxx],其中Xxx就是对象的类型。
对于Object对象,直接调用toString()就能返回[object Object],而对于其他对象,则需要通过call、apply来调用才能返回正确的类型信息。