背景
此文介绍部分 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)
}


文章评论