typeof得出的是数据类型, 如:

typeof(1) //'number'
typeof("abc") //'string'
typeof(true) //'boolean'
var a = {}
typeof(a) //'object'
var b = []
typeof(b) // 'object'

注意最后两句, 一个array的type是object,是不是有些奇怪? 因为, array其实不是基本类型. 那怎么知道array是array呢? 那就要用object的判断方式, instanceof

var b = []
b instanceof Array //true
b instanceof Object //true
1 instanceof Number //false
"abc" instanceof String //false

注意最后两句, 1和"abc"是基本类型, 如果是要Number和String类型的,需要用 new Number和new String来获取

var n = new Number(1)
n instanceof Number //true

然而对于函数function又有点不一样了

var f = function(){}
typeof(f) //function
f instanceof Function //true
f instanceof Object //true

您可以看到, f虽然是一个Object,然而用typeof却可以得到他的类型.
再看看RegExp, 和Array是类似的

typeof(/a/) //object
/a/ instanceof RegExp //true
/a/ instanceof Object //true

标签: none 阅读量: 1240

添加新评论