js中判断对象数据类型的方法

xiaoxiao2025-07-11  11

js中判断对象数据类型的方法

对js中不同数据的布尔值类型总结:false:空字符串;null;undefined;0;NaN。true:除了上面的false的情况其他都为true;

javascript中有六种数据类型:string;boolean;Array;Object;null;undefined。如何检测这些数据类型呢,总结方法如下:

第一种方法:typeof

var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){         console.log(n)     } console.log(typeof obj)    // object console.log(typeof arr)    // object console.log(typeof str)    // string console.log(typeof bool)    // boolean console.log(typeof num)    // number console.log(typeof n)    // object console.log(typeof fn)    // function

通过上面测试,发现typeof检测数组和字典时返回类型都是Object,无法区别是数组还是对象。如果想要检查是数组还是对象使用instanceof方法和constructor方法

第二种方法:instanceof

var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){         console.log(n)     }      console.log(obj instanceof Object)  // true console.log(arr instanceof Array)    // true console.log(str instanceof String)    // false console.log(bool instanceof Boolean)    // false console.log(num instanceof Number)    // false console.log(n instanceof Object)    // false console.log(fn instanceof Function)    // true

注意:instanceof 只可以用来判断数组和对象、函数,不能判断string、数字和boolean类型,如果需要判断string和boolean可使用tostring()方法。

特别注意:

instanceof方法在检查数组是否为对象时,返回结果为True

var arr = ['a','b','c'] console.log(arr instanceof Object)    // true

如果使用instanceof需要严格判断是数组或者是对象时,改进代码如下:

var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var getDataType = function(data){         if(data instanceof Array){             return 'Array'             }         else if (data instanceof Object){             return 'Object'              }         else{             return 'data is not obejct type'         }     }      getDataType(obj)    // Object getDataType(obj)    // Array getDataType(obj)    // data is not obejct type

第三种方法:constructor

var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){         console.log(n)     }      console.log(obj.constructor == Object)  // true console.log(arr.constructor == Array)  // true console.log(str.constructor == String)  // true console.log(bool.constructor == Boolean)  // true console.log(num.constructor == Number)  // true console.log(fn.constructor == Function)  // true

测试发现constructor支持检查Object、Array、String、Boolean、Number、Function

第四种方法:toString(建议使用)

var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){         console.log(n)     }      console.log(Object.prototype.toString.call(obj))    // [object Object] console.log(Object.prototype.toString.call(arr))    // [object Array] console.log(Object.prototype.toString.call(str))    // [object String] console.log(Object.prototype.toString.call(bool))    // [object Boolean] console.log(Object.prototype.toString.call(num))    // [object Number] console.log(Object.prototype.toString.call(n))    // [object Null] console.log(Object.prototype.toString.call(fn))    // [object Function]

从测试看出来,最好使用toString,这个方法功能比较全面。

原文:http://www.chenxm.cc/post/740.html?csdn

转载请注明原文地址: https://www.6miu.com/read-5032892.html

最新回复(0)