类型检测方式

平时数据类型都是清晰明了的,但有些功能函数还是需要用到类型检测,现总结一下几种常见的类型检测方式:

  1. typeof
  2. instanceof
  3. Object.prototype.toString

  typeof:

  通常只记得适合基本类型,

  

  不要忘了还有函数对象

   

  还有只能大致判断的Object相关的

    

  还有一个非主流的null

    

  那么多个object,谁是谁呢?

   instanceof:

  A instanceof B:

    A: 基本类型就直接GG,false,必须是个对象

    B:要么是个对象,要么是个构造函数

    跨平台iframe、不同window一样GG;

    代表是A的原型链上是否有B的prtotype属性(有点拗口,用lol简单点就是判断英雄A(奥巴马)有没有B(破败)的被动来判断是否已经买了B(破败),好吧也不太准确词穷)

      

    所以说这个null有点日怪;

    instanceof最主要的还是判断这个原型链上的关系:

      这个是亲生的

      

      也许你会想这样

      

      因为这是个假老王,

       

      好吧,来个借腹生子的,

      

      

      关键在于改变了ls.__proto__的指向

      

      怎么生一窝呢?

      

      

      

      

      还是把构造器弄回来吧

      

      太懒了,箭头都不想打了

     Object.prototype.toString:

      原型链倒数第二层Object上的方法,原型链没有__proto__就没有再下一层了,再找是null了

      

      怎么用呢,借助call或者apply吧,

        Object.prototype.toString.apply();

        Object.prototype.toString.call();

      

      这个在ie678还是不撑头,null和undefined还会返回"[object Object]";

  

  

最新文章

  1. IT青年深圳销售求职经历
  2. WP8.1下 Cortana语音命令 VCD文件 设计
  3. 博客打开慢?请禁用WordPress默认的谷歌字体!
  4. Java7编程 高级进阶学习笔记--嵌套类
  5. How to use 'crontab' command on bitnami
  6. Protocol Buffers编码详解,例子,图解
  7. iOS之可拖拽重排的CollectionView
  8. BZOJ_1202_狡猾的商人_(并查集)
  9. Simpsons’ Hidden Talents - HDU 2594(求相同的前缀后缀)
  10. FTP文件操作之下载文件
  11. 利用scrollTop 制作图片无缝滚动
  12. Linux RCU机制详解
  13. RabbitMQ插件安装
  14. linux系统编程快速定位头文件的技巧之强大的grep命令
  15. php 通过curl header传值
  16. 蛋白质结构模型和功能预测:Swiss-model工具的使用
  17. mybatis中动态SQL之trim详解
  18. Django之模型层(单表操作)
  19. Spring实现文件的上传下载
  20. NVIDIA安装显卡提示你必须先安装Intel怎么办

热门文章

  1. while与格式化的练习
  2. Java 接口和多态练习
  3. 1. Docker快速入门(仓库,镜像,容器)
  4. Linux 下编写.sh文件运行JAR下的Class
  5. Django中常用字段
  6. 图像描点标注-labelme的安装及使用
  7. tr 替换或删除字符
  8. Crazy Search POJ - 1200 (字符串哈希hash)
  9. 高考数学九大超纲内容(1)wffc
  10. java 用RGB生成图片动态命名