美文网首页
JavaScript类型检测

JavaScript类型检测

作者: yyyzhen | 来源:发表于2017-09-06 11:52 被阅读0次

typeof

适合基本类型和函数类型,遇到null失效

typeof 123  // 'number'
typeof ‘string’  // 'string'
typeof false  // 'boolean'
typeof undefined  // 'undefined'
typeof null  // 'object'
typeof function(){}  // 'function'

instanceof

判断左边的原型链上是否有右边构造函数的prototype属性
适合自定义对象,也可以用来检测原生类型,在不同iframe和window之间检测失效

function Person() {}
function Student() {}
var person = new Person
Student.prototype = new Person
var yz = new Student

person instanceof Person  // true
yz instanceof Student  // true
yz instanceof Person  // true

Object.prototype.toString.apply()

通过{}.toString()拿到,适合内置对象和基元类型,遇到null和undefined失效(IE6/7/8等返回[object Object])
[object class]是对象的类属性,用以表达对象的类型信息

Object.prototype.toString.apply(new Array)  // '[object Array]'
Object.prototype.toString.apply(new Date)  // '[object Date]'
Object.prototype.toString.apply(new RegExp)  // '[object Regexp]'
Object.prototype.toString.apply(function(){})  // '[object Function]'
Object.prototype.toString.apply(false)  // '[object Boolean]'
Object.prototype.toString.apply('string')  // '[object String]'
Object.prototype.toString.apply(1)  // '[object Number]'
Object.prototype.toString.apply(undefined)  // [object Undefined]'
Object.prototype.toString.apply(null)  // '[object Null]'
Object.prototype.toString.apply(window)  // '[object Window]'

判断各种类型

  // 代码出自慕课网《JavaScript深入浅出》1-6节
  // 判断String、Number、Boolean、undefined、null、函数、日期、window对象
  function typeof(el) {
    var result
    if (el === null) {
      result = 'null'
    } else if (el instanceof Array) {
      result = 'array'
    } else if (el instanceof Date) {
      result = 'date'
    } else if (el === window) {
      result = 'window'
    } else {
      result = typeof el
    }
    return result
  }

代码分析:

  • 使用typeof运算符可以确定出number、string、boolean、function、undefined、object这六种
  • 但object中还包括了Array、RegExp、Object、Date、Number、Boolean、String这几种构造函数
  • 所以可以使用instanceof运算符来排除相应的类型
  • null和window使用全等运算符进行验证
  • 为了简化代码,先使用instanceof来验证部分类型,剩下的就可以直接使用typeof来验证类型

相关文章

  • JavaScript 类型检测

    JavaScript 类型检测 本文介绍JavaScript的几种类型检测的方法,以及其各自的适用范围。 Java...

  • Javascript 数据类型检测及原理

    前言 数据类型检测是 JavaScript 中既基础又考验原理的知识,如果你对 JavaScript 数据类型检测...

  • JavaScript类型检测

    typeof 适合基本类型和函数类型,遇到null失效 instanceof 判断左边的原型链上是否有右边构造函数...

  • JavaScript类型检测

    本篇介绍一下如何检测JavaScript各种类型。 5种原始类型 对象 Function Array 属性 5种原...

  • JavaScript类型检测

    参考视频:JavaScript类型检测-慕课网 可以用以下5种来进行类型检测 typeof 适用场景: 检测基础类...

  • JavaScript类型检测

    既然是一个弱类型的语言,那么如何检测类型呢? 1.typeof typeof会返回一个基础数据类型或对象的字符串表...

  • Javascript类型检测

    typeof适合基本类型及function检测,遇到null失效。 [[class]]通过{}.toString拿...

  • javascript检测变量的类型

    javascript检测变量的类型:目前JavaScript有三种方式:typeof,instanceof,obj...

  • javascript类型检测汇总

    方法一:typeof +值 对于基本类型,除 null 以外,均可以返回正确的结果。 对于引用类型,除 funct...

  • JavaScript第二十三篇 技巧篇之函数篇

    函数篇(上) 安全的类型检测 JavaScript 内置的类型检测机制并非完全可靠。事实上,发生错误否定及错误肯定...

网友评论

      本文标题:JavaScript类型检测

      本文链接:https://www.haomeiwen.com/subject/qaysjxtx.html