检测JS数据类型的四种方法

上一篇:数组方法汇总


数据类型分类:

检测方法:

  • type of
    对基本数据类型(null除外)和es6的Symbol还有Function有效,其余都无效检测类型都是object
typeof ''; // string 有效
typeof 1; // number 有效
typeof Symbol(); // symbol 有效
typeof true; //boolean 有效
typeof undefined; //undefined 有效
typeof null; //object 无效
typeof [] ; //object 无效
typeof function(){}; // function 有效
typeof new Date(); //object 无效
typeof new RegExp(); //object 无效
  • instanceof :关于原理,建议先去了解一下原型及原型链

    用途:检测 A是否是B的实例
    用法:A instanceof B
    返回值: true || false

  //当 A 的 __proto__ 指向 B 的 prototype 时,就认为 A 就是 B 的实例
[] instanceof Array; // true
{} instanceof Object;// true
new Date() instanceof Date;// true
 
function Person(){};
new Person() instanceof Person;
 
[] instanceof Object; // true
new Date() instanceof Object;// true
new Person instanceof Object;// true
  • constructor
    用途:判断A作为构造函数是否遗传给了a,a的构造函数是否是A。
    用法: f.constructor == F
    返回值:true || false
    如图:
    constructor检测
  • Object.prototype.toString.call()可用于所有的数据类型检测
    缩写:toString.call()
toString.call('') ;   // [object String]
toString.call(1) ;    // [object Number]
toString.call(true) ; // [object Boolean]
toString.call(Symbol()); //[object Symbol]
toString.call(undefined) ; // [object Undefined]
toString.call(null) ; // [object Null]
toString.call(new Function()) ; // [object Function]
toString.call(new Date()) ; // [object Date]
toString.call([]) ; // [object Array]
toString.call(new RegExp()) ; // [object RegExp]
toString.call(new Error()) ; // [object Error]
toString.call(document) ; // [object HTMLDocument]
toString.call(window) ; //[object global] window 是全局对象 global 的引用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容