var reg1 = /^.*&/;
var reg2 = new RegExp();
var str1 = "str1";
var str2 = new String("str2");
var num1 = 1234;
var num2 = new Number(1234);
var bool1 = true;
var bool2 = new Boolean(true);
var bool3 = Boolean(1);
console.log(typeof reg1);//"object"
console.log(typeof reg2);//"object"
console.log(typeof str1);//"string"
console.log(typeof str2);//"object"
console.log(typeof num1);//"number"
console.log(typeof num2);//"object"
console.log(typeof bool1);//"boolean"
console.log(typeof bool2);//"object"
console.log(typeof bool3);//"boolean"
var coreType = Object.prototype.toString;
console.log(coreType.call(reg1));//[object RegExp]
console.log(coreType.call(reg2));//[object RegExp]
console.log(coreType.call(str1));//[object String]
console.log(coreType.call(str2));//[object String]
console.log(coreType.call(num1));//[object Number]
console.log(coreType.call(num2));//[object Number]
console.log(coreType.call(bool1));//[object Boolean]
console.log(coreType.call(bool2));//[object Boolean]
console.log(coreType.call(bool3));//[object Boolean]
console.log(coreType.call([1,2,3]));//[object Array]
console.log(coreType.call(new Array(3)));//[object Array]
console.log(coreType.call(null));//[Object Null],IE8下为[object Object]
console.log(coreType.call(undefined));//[Object Undefined],IE8下为[object Object]因为typeof的不正常,所以自己实现了一个函数。兼容IE7、8
function getType(arg){
if(arg===null) return "null";
else if (typeof arg ==="undefined") return "undefined";
else return Object.prototype.toString.call(arg).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}