zoukankan      html  css  js  c++  java
  • javascript类型判断最佳实践

    javascript有8种数据类型

    值类型

    1. Number
    2. Null
    3. Undefined
    4. String
    5. Symbol
    6. Boolean
    7. BigInt

    引用类型

    1. Object
    2. Array
    3. Function

    判断数据类型有以下4种判断方法

    第一种方式:   typeof

     typeof null   ---> "object"
    
     typeof undefined  ---> "undefined"
    
     typeof true | false  ---> 'boolean'
    
     typeof 42    ---> 'number'
    
     typeof "42" ---> 'string'
    
     typeof { name : '1'} | []  ---> 'object'
    
     typeof Symbol    ---> 'symbol'
    
     typeof ()=>{}       ---> 'function'
    
     typeof void 0      ---> 'undefined'

    第二种方式  instanceof  但是这种方式只适合判断object类型

    instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上

    详细介绍请看这里:javascript中的instanceof运算符

    比如 :
    var arr = [] ;
    arr instanceof Array   ---> true
    null instanceof Object ---> false
    [function] instanceof Object | Function  --> true

    第三种方式  Object.prototype.toString.call()   这种方式可以将全部的数据类型检测出来 也是 推荐的方式

    因为toString是Object的原型方法, 而 Array Function 等都是Object的实例。都重写了toString 方法。返回的是类型的字符串

     Object.prototype.toString.call(null)  --->  [object Null]
    
     Object.prototupe.toString.call(undefined)  ---> [object Undefined]
    
     Object.prototype.toString.call(123)  ---> [object Number]
    
     Object.prototype.toString.call(true) ---> [object Boolean]
    
     Object.prototype.toString.call('123') ---> [object String]
    
     Object.prototype.toString.call({})    ---> [object Object]
    
     Object.prototype.toString.call([])    ---> [object Array]
    
     Object.prototype.toString.call(Math) ---> [object Math]
    
     Object.prototype.toString.call(function(){}) ---> [object Function]
    
     Objdec.prototype.toString.call(new Date)  ---> [object Date]
    
     Object.prototype.toString.call(Symbol())   ---> [object Symbol]

     第四种方式: constructor  判断对象的构造函。

      1.  null 是js 原型链的起点,没有构造函数
    
      2. undefined 没有构造函数
    
      3. [].constructor  === Array  ---> true
    
      4. [string].constructor === String
    
      5. [object].constructor === object
    
      6. [number].constructor === Number
    
      7. [symbol].constructor === Symbol
    
      8. [function].constructor === Function
    
      9. [new Date].constructor === Date
    
      10. [RegExp].constructor === RegExp
  • 相关阅读:
    C# 还原SQL数据库(非存储过程方式)
    C# 无边框窗体移动代码
    SQL 2008 R2 数据库镜像操作
    序列号
    Oracle VM VirtualBox 随系统自动启动虚拟机的方法
    SQL每个用户最后的一条记录
    JS判断是否在微信浏览器打开
    使用device.js检测设备并实现不同设备展示不同网页
    check单选框多个全选与取消全选
    判断滚动是否到达底部
  • 原文地址:https://www.cnblogs.com/chenyablog/p/12089932.html
Copyright © 2011-2022 走看看