typeof与instanceof区别

2017-06-24  本文已影响310人  春木橙云

曾几何时,一个HR问我,typeof可以判断数据类型,但是无法判断array和object,如何解决,我天真的想到了极为复杂的循环方法解决这一问题,最终失败告终,谁知,instanceof就他娘的可以解决,一想到因为这么简单的无知错失的美好,我就想砸电脑。特此记录,以备后查!

typeof

用于判断数据类型,返回值为6个字符串,分别为stringBooleannumberfunctionobjectundefined

  var a = [34,4,3,54],
        b = 34,
        c = 'adsfas',
        d = function(){console.log('我是函数')},
        e = ture,
        f = null,
        g;

        console.log(typeof(a));//object
        console.log(typeof(b));//number
        console.log(typeof(c));//string
        console.log(typeof(d));//object
        console.log(typeof(e));//boolean
        console.log(typeof(f));//object
        console.log(typeof(g));//undefined

但是你可能会发现,typeof在判断nullarrayobject以及函数实例(new + 函数)时,得到的都是object。这使得在判断这些数据类型的时候,得不到真是的数据类型。由此引出instanceof

instanceof

instance中文翻译为实例,因此instanceof的含义就不言而喻,判断该对象是谁的实例,同时我们也就知道instanceof是对象运算符。
这里的实例就牵扯到了对象的继承,它的判断就是根据原型链进行搜寻,在对象obj1的原型链上如果存在另一个对象obj2的原型属性,那么表达式(obj1 instanceof obj2)返回值为true;否则返回false。

总结:

想必到这里大家也都明白两者的含义和用法,总之,typeof和instanceof都是用来判断变量类型的,两者的区别在于:

上一篇 下一篇

猜你喜欢

热点阅读