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}

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

你可能感兴趣的:(JS中检测数据类型的五种方法。)