javascript基础--数据类型,及检测数据类型方法
javascript数据类型:
1.基本数据类型:
number,string,undefined,boolean,null(表示一个空对象指针)
2.复杂数据类型
object 包括:array,function,data...
数据类型检测方式:
1.typeof:只能检测基本数据类型
例:
var a = '1'
typeof a //string
不难发现null,array,{} typeof判断出的类型都为'object',所以typeof的无法区分数组和对象之间的类型。
2.instanceof:判断是否是对象的实例,构造函数prototype属性所指的对象是否在另一个检索对象的原型链上。
用法:
var obj = new String('123')
console.log(obj instanceof String)
instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型(最主要就是检索原型链)
child继承父类parent,child的原型链指向parent的实例。instanceof会检索child类的原型链。会找到child的父类parent。parent的父类Object.直到整个原型链检索完毕。所以会有以下输出结果。
instanceof只检测对象类型 不能检测Number这种基本类型
3.Object.prototype.toString.call()
记住"[object Null]"都是字符串
//判读数组
function isArray(value){
return Object.prototype.toString.call(value) == "[object Array]"//true
}
isArray(a)
//判读Json
function isJson(value){
return Window.JSON && Object.prototype.toString.call(value) == "[object JSON]"//true
}
第三种方法是比较实用的。
在总结下:
typeof只能检测基本数据类型,区分不了array和对象。
instanceof 只能检测对象类型,不能检测Number这种非对象类型
Object.prototype.toString.call(value)是比较通用的检测数据类型方式,这中方式也可以检测JSON和正则