使用 typeof 是没法准确判断一个对象变量的类型,null 的结果也是 object,数组的结果也是object。使用Object.prototype.toString.call(obj)才能准确判断对象类型数组
Object.prototype.toString.call(123) //[object Number]
Object.prototype.toString.call('123') //[object String]
Object.prototype.toString.call(function(){});//[object Function]
Object.prototype.toString.call([]);//[object Array]
Object.prototype.toString.call(new Date);//[object Date]
Object.prototype.toString.call(/\d/);//[object RegExp]
Object.prototype.toString.call(true);//[object Boolean]
Object.prototype.toString.call(undefined);//[object Undefined]
Object.prototype.toString.call(null);//[object Null]
Object.prototype.toString.call({name: "ted"});//[object Object]
function A(){};
Object.prototype.toString.call(new A);//[object Object]
复制代码