一.js中的数据类型
js中的数据类型分为原始数据类型和引用数据类型
原始数据类型有:undefined null string number boolean
引用数据类型有:object function array
二.js中检测数据类型的方法
typeof(要检测的值)
返回值有:number string boolean undefined object function
注意:typeof检测null的时候返回值是object
这是因为typeof去检测类型的时候是根据检测机器码后三位是000的时候会返回一个object
而null全部是0
注意:typeof检测方法和Array时会返回function类型。
这是因为object定义了一个内部方法[[call]],首先判断这个引用类型有没有这个方法,有则返回function
要检测的值 instanceof 检测的数据类型
返回值有:true false
A instanceof B :检测A是否是由B对象实例化的,instanceof检测是根据原型链来的
三.typeof和instanceof的区别
(1)返回值不一样,typeof返回的是具体的类型,instanceof返回的是ture和false
(2)typeof可以检测任何一个数据,instanceof检测的是A是不是B的实例
四.小技巧之如何判断是对象还是数组
typeof和instanceof都无法判断一个数据是对象还是数组
可以使用Object.prototype.toString.call('1')
Object.prototype.toString.call([])
Object.prototype.toString.call({})
Object.prototype.toString.call(null)
Object.prototype.toString.call(undefined)
Object.prototype.toString.call(new Date())
Object.prototype.toString.call(true)
五.例子
typeof:
console.log(typeof(123))
console.log(typeof(true))
console.log(typeof('1111'))
console.log(typeof(undefined))
console.log(typeof(null))
console.log(typeof([]))
console.log(typeof(new Date()))
console.log(typeof({}))
console.log(typeof(function(){}))
console.log(typeof(Array))
instanceof:
console.log([] instanceof Array)
console.log({} instanceof Object)
console.log(new Date() instanceof Date)
function Person(){}
console.log(new Person instanceof Person)
console.log([] instanceof Object)
console.log(new Date() instanceof Object)
console.log(new Person() instanceof Object)