JS中检测数据类型的五种方法。

因为以前不是很清楚,在网上看了一些文章后做了一下总结。

1.typeof  这是最常用的基本数据类型检测的方法

console.log(typeof "");     // string

console.log(typeof 1);     // number

console.log(typeof true);     // boolean

console.log(typeof undefined);      // undefined

console.log(typeof null);      // object

console.log(typeof {});    // object

console.log(typeof []);     //  object

console.log(typeof function(){});   // function

可以看见,null   数组   跟  {}对象  都是object   是无法区分的

2.instanceof

console.log("1" instanceof String);     // false

console.log(1 instanceof Number);   // false

console.log(true instanceof Boolean);    // false

console.log({} instanceof Object);     //  true

console.log([] instanceof Array);     //  true

console.log(function(){} instanceof Function);     //  true


本方法可以检测复杂数据类型

//            console.log(null instanceof Null);

//            console.log(undefined instanceof Undefined);

null 跟  undefined   直接输出会报错  但是使用new  关键字创建就不会

3.constructor

console.log(("1").constructor === String);    //  true

console.log((1).constructor === Number);     //  true

console.log((true).constructor === Boolean);      //  true

console.log(({}).constructor === Object);        //  true

console.log(([]).constructor === Array);        //  true

console.log((function() {}).constructor === Function);      //  true

//    console.log((null).constructor === Null);

//    console.log((undefined).constructor === Undefined);

看起来是可以解决所有问题了,但是改原型(prototype)就会改变类型

4.Object.prototype.toString.call()      终极方法,百试不爽

 console.log(Object.prototype.toString.call("1"));    //  {object    String}

 console.log(Object.prototype.toString.call(1));      //  {object    Number}

console.log(Object.prototype.toString.call(null));         //  {object    Null}

console.log(Object.prototype.toString.call(undefined));         //  {object    Undefined}

 console.log(Object.prototype.toString.call(true));     //  {object    Boolean}

 console.log(Object.prototype.toString.call({}));      //  {object     Object}

 console.log(Object.prototype.toString.call([]));         //  {object    Array}

 console.log(Object.prototype.toString.call(function () {});        //  {object   Fuction}

就算是更改原型一样可以输出 原来的数据类型

5.$.type() 或者  jQuery.type()   常用的jQuery方法,实质就是第四种方法,使用简便,但是需要引入jQuery

$.type("1")      //  {object String}

$.type(1)      //  {object Number}

$.type([])    //  {object    Array}

$.type(undefined)    //  {object Undefined}

$.type(null)     //  {object    Null}

就列举几个了,输出同方法四相同

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容