1、typeof
console.log(typeof 2); //number
console.log(typeof true); //boolean
console.log(typeof 'string'); //string
console.log(typeof []); //object
console.log(typeof function(){
}); //function
console.log(typeof {
}); //object
console.log(typeof undefined); //undefined
console.log(typeof null); //object
2、instanceof
instanceof 可以判断对象的类型,其内部运行机制是判断原型链中能否找到该类型的原型
console.log(2 instanceof Number); //false
console.log(true instanceof Boolean); //false
console.log('str' instanceof String); //false
console.log([] instanceof Array); //true
console.log(function(){
} instanceof Function); //true
console.log({
} instanceof Object); //true
3、constructor
constructor有两个作用,一是判断数据的类型,二是对象实例通过constructor对象访问它的构造函数
console.log((2).constructor === Number); //true
console.log((true).constructor === Boolean); //true
console.log(('str').constructor === String); //true
console.log(([]).constructor === Array); //true
console.log((function(){
}).constructor === Function); //true
console.log(({
}).constructor === Object); //true
4、Object.prototype.toString.call()
var a = Object.prototype.toString;
console.log(a.call(2)); //[object Number]
console.log(a.call(true)); //[object Boolean]
console.log(a.call('string')); //[object String]
console.log(a.call([])); //[object Array]
console.log(a.call(function(){
}));//[object Function]
console.log(a.call({
})); //[object Object]
console.log(a.call(undefined)); //[object undefined]
console.log(a.call(null)); //[object null]