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