简单数据类型 又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
string , number , boolean , undefined , null
比较特殊的就是 null
简单数据类型 null 返回的是一个空的对象 object
所有他常用于 : 如果有个变量我们以后打算存储为对象, 暂时没想好放啥, 这个时候就给 null
复杂数据类型
通过new关键字创建的对象都是复杂数据类型(系统对象、自定义对象),如Object、Array、Date等
typeof只能判断基础数据类型
console.log(typeof 1); // number
console.log(typeof 'abc'); // string
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof null); // object
instanceof 只能判断引用数据类型 不能判断基础数据类型
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log('abc' instanceof String); //false
console.log(123 instanceof Number); // false
constructor 基本都能判断
console.log(('abc').constructor === String) // true
如果声明了一个构造函数,并将他的原型指向Array 就不能判断
Object.prototype.toString.call()
console.log(Object.prototype.toString.call(123)); // [object Number]
console.log(Object.prototype.toString.call('abc')); // [object String]
console.log(Object.prototype.toString.call([])); // [object Array]
console.log(Object.prototype.toString.call({})); // [object Object]
console.log(Object.prototype.toString.call(null)); // [object Null]
console.log(Object.prototype.toString.call(undefined)); // [object Undefined]