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

方法一:采用typeof

 var fn = function(n){console.log(n);}var str = 'string';var arr = [1,2,3];var obj = {a:123,b:456};var num = 1;var b = true;var n = null;       var u = undefined;//方法一使用typeof方法。console.log(typeof str);//stringconsole.log(typeof arr);//objectconsole.log(typeof obj);//objectconsole.log(typeof num);//numberconsole.log(typeof b);//booleanconsole.log(typeof n);//null是一个空的对象console.log(typeof u);//undefinedconsole.log(typeof fn);//function
 

通过上面的检测我们发现typeof检测的Array和Object的返回类型都是Object,因此用typeof是无法检测出来数组和对象的,采用方法二和方法三则可以检测出来。

方法二:instanceof

 var o = { 'name':'lee'};var a = ['reg','blue'];console.log(o instanceof Object);// trueconsole.log(a instanceof Array);//  trueconsole.log(o instanceof Array);//  false

注意:instaceof只可以用来判断数组和对象,不能判断string和boolean类型,要判断string和boolean类型需要采用方法四。
 由于数组也属于对象因此我们使用instanceof判断一个数组是否为对象的时候结果也会是true。如:

console.log(a instanceof Object);//true。

下面封装一个方法进行改进:

var o = { 'name':'lee'};
var a = ['reg','blue'];
var getDataType = function(o){if(o instanceof Array){return 'Array'}else if( o instanceof Object ){return 'Object';}else{return 'param is no object type';}};
console.log(getDataType(o));//Object。
console.log(getDataType(a));//Array。

方法三:使用constructor方法

var o = { 'name':'lee'};
var a = ['reg','blue'];
console.log(o.constructor == Object);//true
console.log(a.constructor == Array);//true

方法四:利用tostring()方法,这个方法是最佳的方案。

var o = { 'name':'lee'};
var a = ['reg','blue'];
function c(name,age){this.name = name;this.age = age;}
var c = new c('kingw','27');
console.log(Object.prototype.toString.call(a));//[object Array]
console.log(Object.prototype.toString.call(o));//[Object Object]
console.log(Object.prototype.toString.call(c));//[Object Object]//封装一个方法判断数组和对象
function isType(obj){var type = Object.prototype.toString.call(obj);if(type == '[object Array]'){return 'Array';}else if(type == '[object Object]'){return "Object"}else{return 'param is no object type';}
}
console.log(isType(o));//Object
console.log(isType(a));//Array

方法五:利用jquery的$.isPlainObject();$.isArray(obj);$.isFunction(obj)进行判断。

js中判断对象数据类型的方法相关推荐

  1. js中判断对象具体类型

    大家可能知道js中判断对象类型可以用typeof来判断,看下面的情况. <script>alert(typeof 1);//numberalert(typeof "2" ...

  2. js中event对象属性和方法

    1.type 事件的类型,如onlick中的click: 2.srcElement/target 事件源,就是发生事件的元素: 3.button 声明被按下的鼠标键,整数,1代表左键,2代表右键,4代 ...

  3. js中判断对象是否为空

    1.es6中可以使用Object.keys(obj) var data = {}; var arr = Object.keys(data); alert(arr.length == 0); //tru ...

  4. 在js中Date对象用getDay方法get到的是个啥玩意儿?

    懒得写日期加减的逻辑,于是在网上随便拷贝了个代码进来,结果,我输入2020-04-29,加三个月后get到的却是2020-06-03 开始还没有发现问题在哪,结果是getDay的问题,所以这到底get ...

  5. JS中判断对象是对象还是数组

    JS中判断对象是对象还是数组的方法 JS中判断对象是不是数组的方法 JavaScript中检测对象的方法  1.typeof操作符  这种方法对于一些常用的类型来说那算是毫无压力,比如Function ...

  6. js中判断数据类型的方法

    JS中判断数据类型的方法: 使用typeof操作符. 对一个值使用 typeof 操作符可能返回下列某个字符串,返回的类型都是字符串形式. (1) undefined:如果这个值未定义 (2) boo ...

  7. 3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景|判断数组里有没有某对象,有不添加,没有则添加到数组

    3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景 一.当数组中的数据是简单类型时: 应用js中的indexof方法:存在则返回当前项索引,不存在则返回 ...

  8. js中判断两个对象是否相等。

    js中判断两个对象是否相等. js中的Object.Array.Function等复杂数据类型,是无法直接用==和===操作符进行比对的. Object对比 const tar = { name:'张 ...

  9. php 遍历对象数组,js中遍历对象(5种)和遍历数组(6种)的方法总结

    本篇文章给大家带来的内容是关于js中遍历对象(5种)和遍历数组(6种)的方法总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.遍历对象方法 1.for...in 遍历输出的是对 ...

最新文章

  1. php libdir,PHP扩展小结
  2. java implements interface_Java 接口 interface implements
  3. R语言学习 - 图形设置中英字体
  4. OpenCV--常见图片格式转换与深浅拷贝
  5. Ubuntu18.04更换清华源
  6. [转载]MySQL各类SQL语句的加锁机制
  7. 简历 java技能_java软件工程师简历专业技能填写样本
  8. python计算机视觉编程——sift特征提取和ransac减少错配
  9. Unity Audio Mixer介绍
  10. java文本框双击可编辑_JS实现双击内容变为可编辑状态
  11. Mydrivers: 64国IT竞争力排名 中国仅第49
  12. PyTorch1.12 亮点一览 | DataPipe + TorchArrow 新的数据加载与处理范式
  13. Android用户头像上传
  14. BZOJ1707: [Usaco2007 Nov]tanning分配防晒霜
  15. 潭州学院html学习(day02)
  16. symbian系统开发教程(一) 1
  17. SpringBoot笔记(主程序类@SpringBootApplication详解)
  18. Leetcode 1110.删点成林(Delete Nodes And Return Forest)
  19. IPTG诱导蛋白表达的原理
  20. java在苹果电脑上编程软件下载_KOOV编程软件mac版下载

热门文章

  1. Hibernate里面session.get()和session.load()的区别
  2. javascript textContent与innerText的异同分析
  3. 浏览器的重绘和重排的影响
  4. HTTP Status Code(Http状态码)
  5. 7-19 树种统计 (10 分)
  6. 7-6 红豆生南国 (25 分)
  7. mysql获取当前时间的订单_mysql获取当前时间,及其相关操作
  8. excel导入mysql命令行_使用命令行将Excel数据表导入Mysql中的方法小结
  9. PAT乙级 1076 Wifi密码
  10. 如何修改GitHub项目显示语言问题