javascript中如何判断对象的数据类型?

如果下载的源码需要作者授权,请更换源码。本站免费分享资源不会增加授权

本篇文章给大家带来的内容是关于javascript中如何判断对象的数据类型?,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

javascript中有六种数据类型stringbooleanArrayObjectnull;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,这个方法功能比较全面。

本文由(壳先生)整理自网络,如转载请注明出处:https://www.mrshell.com;
本站发布的内容若侵犯到您的权益,请邮件联系 i@mrshell.com 删除,我们将及时处理!
===========================================================================

1. 本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2. 本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3. 不得使用于非法商业用途,商用请支持正版!不得违反国家法律,否则后果自负!
4. 若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!

=================================================================

壳先生 » javascript中如何判断对象的数据类型?

发表评论

提供最优质的资源集合

立即查看 了解详情