Cherish_Now

导航

js判断数据类型的方法

基本类型: “number”,”string”,”undefined”,”boolean”,”object”,“function” 。

能精准判断数据类型 Object.prototype.toString方法----精确判断对象的类型

var num = 1;Object.prototype.toString.call(num);                   //[object Number
var num = '1';Object.prototype.toString.call(num);                  //[object String]
var num = [1,2,3,4];Object.prototype.toString.call(num);         //[object Array
var num = {a:'1',b:'2'};Object.prototype.toString.call(num);     //[object Object]
var num = null;Object.prototype.toString.call(num);                //[object Null]
var num = undefined;Object.prototype.toString.call(num);      //[object Undefined]
var num = new Date();Object.prototype.toString.call(num);    //[object Date]
var num = true;Object.prototype.toString.call(num);               //[object Boolean]
var num = function(){};Object.prototype.toString.call(num);    //[object Function]
var num = /^\d/;Object.prototype.toString.call(num);               //[object RegExp]

封装一个专门判断数组和对象

var getDataType = function(x){
    var type = Object.prototype.toString.call(x);
    if( type =='[object Array]'){
        return 'Array'
    }else if(type =='[object object]'){
        return 'Object'
    }else{
        return '不是object'
    }
}
console.log(getDataType({}));//Object
console.log(getDataType([1,2,3]));//Array

toString()的基本用法(我们使用不同进制把一个数字转换为字符串)

var a=[5,3,4,1];
console.log(a.toString());//5,3,4,1

var num = 15;
var a = num.toString();//15
var b = num.toString(2);//1111
var c = num.toString(8);//17
var d = num.toString(16);//f

能判断基本的数据类型 typeof

var num = true;console.log(typeof num);                                 //boolean
var num = 1;console.log(typeof num);                                      //number
var num = '1';console.log(typeof num);                                     //string
var num = {a:'1'};console.log(typeof num);                                //object
var num = [1,2,3];console.log(typeof num);                               //object
var num = null;console.log(typeof num);                                    //object
var num = undefined;console.log(typeof num);                         //undefined
var num = function(){};console.log(typeof num);                        //function
var num = new Date();console.log(typeof num);                       //object
var num =  /^\d/;console.log(typeof num);                                  //object

instaceof 只可以用来判断数组和对象

var a = {a:'1'};
var b=[1,2,3,4];
console.log(a instanceof Array);//false
console.log(a instanceof Object);//true
console.log(b instanceof Array);//true

由于数组也属于对象,所以使用instanceof判断一个数组是否为对象的时候结果也会是true
console.log(b instanceof Object);//true
此时可以封装函数进行改进:

var getDataType = function(x){
    if(x instanceof Array){
        return 'Array'
    }else if(x instanceof Object){
        return 'Object'
    }else{
        return '不是object'
    }
}
console.log(getDataType({}));//Object
console.log(getDataType([1,2,3]));//Array

使用constructor

var obj = {a:'1',b:'2'}
var arr = [1,2,3,4]
console.log(obj.constructor == Object);//true
console.log(arr.constructor == Array);//true

posted on 2019-03-05 15:02  Cherish_Now  阅读(214)  评论(0)    收藏  举报