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
  • 相关阅读:
    百度影音盒插入论坛帖子自动播放代码及方法
    vFloppy1.5-虚拟启动软盘
    飞秋的实现原理
    博客盈利请先考虑这七点
    下载站运行广告合作exe文件然后再运行程序文件的bat
    木马病毒是什么以及手工清除木马病毒具体步骤
    网站盈利模式分析分类
    软件更新原理
    浅析php学习的路线图
    网页常用分享代码大全(前端必备)
  • 原文地址:https://www.cnblogs.com/chenyablog/p/12089932.html
Copyright © 2011-2022 走看看