• 493 JS中数据类型检测的四种方案


    1. typeof
      语法:typeof [val] 返回当前值对应的数据类型(STRING)
      优势:检测基本类型值还是很准确的,而且操作起来方便
      略势:
      typeof null =>"object" 【01开头存储的是对象。】
      typeof 检测数组/对象/正则等都是 "object",所以无法对对象数据类型细分

    1. instanceof
      语法:[val] instanceof 类, 通过检测这个值是否属于这个类,从而验证是否为这个类型
      优势:对于数组、正则、对象可以细分一下
      略势:
      基本数据类型无法基于它来进行检测
      检测的原理:只要在当前实例的__proto__出现这个类,检测结果都是TRUR

    1. constructor
      和instanceof类似,也是非专业检测数据类型的,但是可以这样处理一下
      语法:[val].constructor === 类
      相对于instanceof来讲,基本类型也可以处理,而且因为获取实例的constructor实际上获取的是直接所属的类,
      所以在检测准确性上比instanceof还好一点
      略势:constructor是可以随意被改动的

    1. Object.prototype.toString.call([val]):最强大的检测方案
      在其它数据类型的内置类原型上有toString,但是都是用来转换为字符串的,
      只有Object基类原型上的toString是用来检测数据类型的。
      [11, 22].toString()的结果:去掉逗号后面空格的"11,22"。
      obj.toString(): obj这个实例调用Object.prototype.toString执行,方法执行里面的THIS是当前操作的实例OBJ,此方法就是检测实例THIS的数据类型的,返回结果:"[object 所属的类]"。
      Object.prototype.toString.call([val]) 基于call强制改变方法中的this是[val],就相当于在检测val的数据类型 <=> ({}).toString.call([val])
      【 ({}).toString拿到 Object.prototype.toString。{} 可以是语句块,也可以是 对象字面量。】
  • 相关阅读:
    吉他音阶笔记(以C调为基准)
    小程序页面跳转问题
    Adobe-premierej剪辑视频分辨率问题及格式转换画面质量分辨率
    关于ps抠图问题,制作公章,公章的复制
    premiere视频剪辑关于导出视屏分辨率的问题
    最后一个单词的长度
    10.两个链表的交叉
    软件工程——个人总结
    软件工程——团队专业4
    软件工程——团队答辩
  • 原文地址:https://www.cnblogs.com/jianjie/p/13217407.html
Copyright © 2020-2023  润新知