js数据类型分为两种:基本数据类型和引用数据类型。一般情况下,判断基本数据类型使用 typeof 关键字,而判断引用类型使用 instanceof 关键字。
- typeof
typeof 2 === 'number' typeof 'demo' === 'string' typeof null === 'object' typeof Array === 'function'
实际上, typeof 运算符的原理同 Object.prototype.toString 一样:
var toString = Object.prototype.toString; console.log(toString.call(2)); // [object Number] console.log(toString.call(true)); // [object Boolean] console.log(toString.call('str')); // [object String] console.log(toString.call([])); // [object Array] console.log(toString.call(function(){})); // [object Function] console.log(toString.call({})); // [object Object] console.log(toString.call(undefined)); // [object Undefined] console.log(toString.call(null)); // [object Null]
- instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。值得注意的是,该运算符只适用于实例对象,也就是说判断基本数据类型无效。 Object instanceof constructor :某个实例对象 instanceof 某个构造函数。