概述
typeof和instanceof的区别
typeof
用于数据类型的判断,返回值有number、string、boolean、function、undefined、object 六个。
<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的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复