typeof和instanceof的不同

typof

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

        console.log(typeof(a));//object
        console.log(typeof(b));//number
        console.log(typeof(c));//string
        console.log(typeof(d));//function
        console.log(typeof(e));//boolean
        console.log(typeof(f));//object
        console.log(typeof(g));//undefined
  1. 使用: 用于判断数据类型,返回值为6个字符串,分别为stringBooleannumberfunctionobjectundefined
  2. 缺点: 但是你可能会发现,typeof在判断null、array、object以及函数实例(new + 函数)时,得到的都是object。这使得在判断这些数据类型的时候,得不到真是的数据类型。由此引出instanceof。

instanceof

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

注意

  1. typeof直接返回的是数据类型, 使用起来 相对方便一些
  2. instanceof只能用于判断真假, 返回的是布尔值
发布了62 篇原创文章 · 获赞 1 · 访问量 1314

猜你喜欢

转载自blog.csdn.net/qq_43382853/article/details/103661276