直接上运行结果来观察
typeof的运行结果
基本类型开始
console.log(typeof 1); //number
console.log(typeof true); //boolean
console.log(typeof undefined); //undefined
console.log(typeof ''); //string
基本类型结束
引用类型开始
console.log(typeof {}); //object
console.log(typeof []); //object
console.log(typeof function(){}); //function
引用类型结束
Object.prototype.toString的运行结果
基本类型开始
console.log(Object.prototype.toString.call(1)); //[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('')); //[object String]
基本类型结束
引用类型开始
console.log(Object.prototype.toString.call({})); //[object Object]
console.log(Object.prototype.toString.call([])); //[object Array]
console.log(Object.prototype.toString.call(function(){})); //[object Function]
引用类型结束
总结:
typeof 可以精准判断基本对象类型
typeof 无法精准判断引用对象类型
Object.prototype.toString.call 可以精准判断对象类型