因为以前不是很清楚,在网上看了一些文章后做了一下总结。
1.typeof 这是最常用的基本数据类型检测的方法
console.log(typeof ""); // string
console.log(typeof 1); // number
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof {}); // object
console.log(typeof []); // object
console.log(typeof function(){}); // function
可以看见,null 数组 跟 {}对象 都是object 是无法区分的
2.instanceof
console.log("1" instanceof String); // false
console.log(1 instanceof Number); // false
console.log(true instanceof Boolean); // false
console.log({} instanceof Object); // true
console.log([] instanceof Array); // true
console.log(function(){} instanceof Function); // true
本方法可以检测复杂数据类型
// console.log(null instanceof Null);
// console.log(undefined instanceof Undefined);
null 跟 undefined 直接输出会报错 但是使用new 关键字创建就不会
3.constructor
console.log(("1").constructor === String); // true
console.log((1).constructor === Number); // true
console.log((true).constructor === Boolean); // true
console.log(({}).constructor === Object); // true
console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
// console.log((null).constructor === Null);
// console.log((undefined).constructor === Undefined);
看起来是可以解决所有问题了,但是改原型(prototype)就会改变类型
4.Object.prototype.toString.call() 终极方法,百试不爽
console.log(Object.prototype.toString.call("1")); // {object String}
console.log(Object.prototype.toString.call(1)); // {object Number}
console.log(Object.prototype.toString.call(null)); // {object Null}
console.log(Object.prototype.toString.call(undefined)); // {object Undefined}
console.log(Object.prototype.toString.call(true)); // {object Boolean}
console.log(Object.prototype.toString.call({})); // {object Object}
console.log(Object.prototype.toString.call([])); // {object Array}
console.log(Object.prototype.toString.call(function () {}); // {object Fuction}
就算是更改原型一样可以输出 原来的数据类型
5.$.type() 或者 jQuery.type() 常用的jQuery方法,实质就是第四种方法,使用简便,但是需要引入jQuery
$.type("1") // {object String}
$.type(1) // {object Number}
$.type([]) // {object Array}
$.type(undefined) // {object Undefined}
$.type(null) // {object Null}
就列举几个了,输出同方法四相同