4
  1. typeof用在基本数据类型和函数时,返回其对应类型的描述,对于引用类型都返回为object.
  2. instanceof无法判断基本数据类型,对于引用类型数据,返回其其对应类型。
  3. Object.prototype.toString无论基本数据类型还是引用类型返回其对应类型。

对应测试结果如下:

typeof test instanceof Object.prototype.toString.call(test)
var test = 'xuriliang'; string test instanceof String //false [object String]
var test = 27; number test instanceof Number //false [object Number]
var test = true; boolean test instanceof Boolean //false [object Boolean]
var test = [1,2,3]; object test instanceof Array //true [object Array]
test instanceof Object //true
var test = null; object test instanceof Object //false [object Null]
var test = undefined; undefined test instanceof Object //false [object Undefined]
var test = new String('xuriliang') object test instanceof String //true [object String]
test instanceof Object //true
var test = new Number(27) object test instanceof Number //true [object Number]
test instanceof Object //true
var test = new Boolean(true) object test instanceof Boolean //true [object Boolean]
test instanceof Object //true
var test = new Array(1,2,3) object test instanceof Array //true [object Array]
test instanceof Object //true
var test = function(){} function test instanceof Function //true [object Function]
test instanceof Object //true
var test = /d/ object test instanceof RegExp //true [object RegExp]
test instanceof Object //true

xuriliang
245 声望6 粉丝