typeof
用在基本数据类型和函数时,返回其对应类型的描述,对于引用类型都返回为object.instanceof
无法判断基本数据类型,对于引用类型数据,返回其其对应类型。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 |