typeof和instanceof的区别
typeof
用于数据类型的判断,返回值有number、string、boolean、function、undefined、object 六个。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<script> var a, b, c, d, e, f,g,h,i; a = [1, 2, 3, 4, 5]; b = 1; c = "weaface"; d = false; f = null; e = new Date(); g = undefined; h = function () {}; console.log(typeof(a));//object console.log(typeof(b));//number console.log(typeof(c));//string console.log(typeof(d));//boolean console.log(typeof(e));//object console.log(typeof(f));//object console.log(typeof(g));//undefined console.log(typeof(h));//function console.log(typeof(i));//undefined </script>
但是,在其中你会发现,typeof判断null、array、object以及函数的实例(new + 函数)时,它返回的都是object。这就导致在判断这些数据类型的时候得不到真实的数据类型。由此引出instanceof。
instanceof
instance的意思是实例,因此可以知道instanceof的作用就是判断该对象是谁的实例,我们也就知道了instanceof是对象运算符。
这就牵扯到了对象的继承,他的判断就是根据原型链进行搜寻,在对象obj1的原型链上如果存在另一个对象obj2的原型属性,那么表达式(obj1 instanceof obj2)返回值为true,否则为false。
总结
总之,typeof 和 instanceof 都是用来判断变量类型的,区别在于:
1、typeof判断所有变量的类型,返回值有number、string、boolean、function、object、undefined。
2、typeof对于丰富的对象实例,只能返回object,导致有时候得不到真实的数据类型。
3、instanceof用来判断对象,代码形式(obj1 instanceof obj2)(判断obj1是否为obj2的实例),obj2必须为对象,否则会报错。返回的是布尔值。
4、instanceof可以对不同的实例对象进行判断,判断方法是根据对象的原型链依次向下查询,如果obj2的原型属性存在于obj1的原型链上,(obj1 instanceof obj2)值为true。
最后
以上就是时尚河马最近收集整理的关于JS数据类型判断,typeof和instanceof的区别的全部内容,更多相关JS数据类型判断,typeof和instanceof内容请搜索靠谱客的其他文章。
发表评论 取消回复