我是靠谱客的博主 时尚河马,最近开发中收集的这篇文章主要介绍JS数据类型判断,typeof和instanceof的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部