javascript 高级编程系列 - 数据类型检测
1. typeof 操作符
只能判断基本类型,无法判断对象类型
typeof 1 // 'number'
typeof 'hello' // 'string'
typeof true // 'boolean'
typeof function(){} // 'function'
typeof [] // 'object'
typeof {} // 'object'
2. Object.prototype.toString 方法
用来识别原生对象
Object.prototype.toString.call(1) // [object Number]
Object.prototype.toString.call(true) // [object Boolean]
Object.prototype.toString.call('string') // [object String]
Object.prototype.toString.call([]); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(()=>{}); // [object Function]
3. instanceof 操作符
只能用来检测对象,无法检测基本数据类型,所以必须将基本类型转为对象才能进行检测
Object(1) instanceof Number // true
Object('str') instanceof String // true
Object(true) instanceof Boolean // true
Object(function(){}) instanceof Function // true
Object({}) instanceof Object // true
Object([]) instanceof Array // true
4. constructor 属性
根据对象的构造函数,判断对象类型
('sh').constructor // [Function: String]
(true).constructor // [Function: Boolean]
(1).constructor // [Function: Number]
([]).constructor // [Function: Array]
({}).constructor // [Function: Object]
(function(){}).constructor // [Function: Function]