一、typeof判断数据类型(判断数组跟对象都返回object)
console.log(typeof null);//object
console.log(typeof function(){
return 1;
});//function
console.log(typeof '小A');//string
console.log(typeof 1);//number
console.log(typeof a);//undefined
console.log(typeof undefined);//undefined
console.log(typeof []);//object
console.log(typeof NaN);//number
console.log(typeof {});//object
二、instanceof判断对象的原型链是否是指向构造函数的prototype
var arr = [1, 2, 3, 1];
console.log(arr instanceof Array);//true
//console.log(arr.constructor === Array); //true
三、对象的constructor属性
var arr = [1, 2, 3, 1];
console.log(arr.constructor === Array); //true
四、Object.prototype.toString.call(arr)
利用对象的toString可以准确判断是什么类型,call()改变this指向。
console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
console.log(Object.prototype.toString.call(new Person));//[object Object]
五、es6方法 - Array.isArray()
Array.isArray([]); //true