js的数据类型分为:
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。
引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function)
typeof 判断
上图可以知道:
1. typeof的返回结果都是string类型
2. 有个特殊的情况就是 null ,对象以及数组的返回值都是object。
那我们应该如何区分这三个类型呢?
Object.prototype.toString.call()
/**null判断**/
Object.prototype.toString.call(null);//'[object Null]'
/**对象判断**/
Object.prototype.toString.call({});// '[object Object]'
/**数组判断**/
Object.prototype.toString.call([]);//'[object Array]'
使用Object.prototype.toString.call虽然有些繁琐,但可以判断出js的引用类型。不过对于自定义的对象则只会返回 '[object Object]'。对于自定义的对象,则可以使用 instanceof 来判断。