嘎里三分熟
  • 首页
  • JMusic
  • TSBay
  • 常用工具
  • About Me
  • 留言板
一行代码一世浮生
  1. 首页
  2. Java web
  3. JavaScript
  4. 正文

JS中判断数据类型

2018年04月08日 1967点热度 2人点赞 0条评论

背景

    此文介绍部分 JS 中用来判断数据类型的方法。
    JS中数据类型有:空字符串、null、undefined、NaN、number、boolean、string、object、array,等。
    其中的 Boolean 值判断为 false 的有:空字符串、null、undefined、NaN、0、false,
    其余所有都为 true。
    如下介绍其中最基本的六种数据类型的判断方法。

方法一:typeof

var num = 1;
var str = "hello";
var bool = true;
var n = null;
var arr = [1,2,3];
var obj = {"name":"Jet"};
var fun = function(){console.log(1)}
console.log(typeof num); // number
console.log(typeof str); // string
console.log(typeof bool); // boolean
console.log(typeof n); // object
console.log(typeof arr); // object
console.log(typeof obj); // object
console.log(typeof fun); // function
    测试发现,数组、对象、null,都显示 object,所以需要更换方法进行获取。

方法二:instanceof 和 constructor

    ① instanceof          这个方法其实只能用来判断是否是数组或对象,但是测试发现,数组其实也是对象。
var arr = [1,2,3];
var obj = {"name":"Jet"};
console.log(arr instanceof  Array); // true
console.log(arr instanceof  Object); // true
console.log(obj instanceof  Array); // false
console.log(obj instanceof  Object); // true
    ② constructor         此方法其实也只用于判断是否是数组或对象,
var arr = [1,2,3];
var obj = {"name":"Jet"};
console.log(arr.constructor == Array); // true
console.log(arr.constructor == Object); //false
console.log(obj.constructor == Array); // false
console.log(obj.constructor == Object); // true

方法三:jQuery 系列

    jQuery 中有 $.isPlainObject()、$.isArray(obj)、$.isFunction(obj) 来进行判断,但是也有限,所以我们就需要下面描述的万能之法。

方法四:toString() 无敌万能方法

    此方法是万能的。
var num = 1;
var str = "hello";
var bool = true;
var n = null;
var arr = [1,2,3];
var obj = {"name":"Jet"};
var fun = function(){console.log(1)}
console.log(Object.prototype.toString.call(num)); // [object Number]
console.log(Object.prototype.toString.call(str)); // [object String]
console.log(Object.prototype.toString.call(bool)); // [object Boolean]
console.log(Object.prototype.toString.call(n)); // [object Null]
console.log(Object.prototype.toString.call(arr)); // [object Array]
console.log(Object.prototype.toString.call(obj)); // [object Object]
console.log(Object.prototype.toString.call(fun)); // [object Function]
    所以我们就干脆自己来封装一个方法:
function getObjType(obj){
    var type = Object.prototype.toString.call(obj);
    return type.substring(7, type.length-1)
}







本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: constructor instanceof JavaScript JS typeof
最后更新:2018年04月08日

GoldenJet

爱折腾技术的90后漫威小死忠程序员一枚

点赞
< 上一篇
下一篇 >

文章评论

取消回复

通过电子邮件订阅博客

分类目录
  • BootStrap (2)
  • Bug集中营 (6)
  • Java web (3)
  • JavaScript (7)
  • Java基础 (17)
  • Java工具 (5)
  • Linux (3)
  • Python (3)
  • SpringBoot (14)
  • Spring基础 (8)
  • thymeleaf (1)
  • 娱乐 (3)
  • 小谈 (2)
  • 常用工具 (7)
  • 技术分析集 (5)
  • 技能 (10)
  • 源码 (4)
  • 科普类 (1)
  • 算法 (9)
  • 踩坑记 (5)
文章归档
  • 2020年11月 (1)
  • 2020年7月 (1)
  • 2020年4月 (2)
  • 2020年3月 (1)
  • 2020年1月 (1)
  • 2019年11月 (1)
  • 2019年10月 (1)
  • 2019年9月 (1)
  • 2019年8月 (1)
  • 2019年7月 (2)
  • 2019年5月 (2)
  • 2019年4月 (2)
  • 2019年3月 (3)
  • 2019年2月 (2)
  • 2019年1月 (2)
  • 2018年12月 (2)
  • 2018年11月 (3)
  • 2018年10月 (3)
  • 2018年9月 (2)
  • 2018年8月 (3)
  • 2018年7月 (2)
  • 2018年5月 (1)
  • 2018年4月 (3)
  • 2018年3月 (2)
  • 2018年2月 (3)
  • 2018年1月 (5)
  • 2017年12月 (2)
  • 2017年11月 (3)
  • 2017年10月 (1)
  • 2017年9月 (1)
  • 2017年8月 (1)
  • 2017年7月 (7)
  • 2017年6月 (5)
  • 2017年5月 (1)
  • 2017年4月 (2)
  • 2017年3月 (4)
  • 2017年2月 (2)
小伙伴友链
  • 前端驿站

COPYRIGHT © 2017-2020 嘎里三分熟. ALL RIGHTS RESERVED.

浙ICP备17005575号-1

浙公网安备 33010802009043号