zoukankan      html  css  js  c++  java
  • typeof与instanceof区别

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

    typeof

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

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

    instanceof

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

    总结:

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

    • typeof判断所有变量的类型,返回值有number,boolean,string,function,object,undefined。
    • typeof对于丰富的对象实例,只能返回"Object"字符串。
    • instanceof用来判断对象,代码形式为obj1 instanceof obj2(obj1是否是obj2的实例),obj2必须为对象,否则会报错!其返回值为布尔值。
    • instanceof可以对不同的对象实例进行判断,判断方法是根据对象的原型链依次向下查询,如果obj2的原型属性存在obj1的原型链上,(obj1 instanceof obj2)值为true。


    作者:HARRISKING
    链接:https://www.jianshu.com/p/4ff2332228be
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     
  • 相关阅读:
    记录一次.Net框架Bug发现和提交过程:.Net Framework和.Net Core均受影响
    浅谈 Angular 项目实战
    Angular CLI 升级 6.0 之后遇到的问题
    构建具有用户身份认证的 Ionic 应用
    关于 Angular 跨域请求携带 Cookie 的问题
    使用 ng build 构建后资源地址引用错误的问题
    React 系列教程 1:实现 Animate.css 官网效果
    如何在已有的 Web 应用中使用 ReactJS
    关于浏览器后退操作与页面缓存问题
    三阶魔方公式速记
  • 原文地址:https://www.cnblogs.com/1549983239yifeng/p/13996866.html
Copyright © 2011-2022 走看看