Skip to content

Instantly share code, notes, and snippets.

@GeekaholicLin
Last active December 10, 2016 06:25
Show Gist options
  • Select an option

  • Save GeekaholicLin/dee46a68224a94543737c15b4b732b28 to your computer and use it in GitHub Desktop.

Select an option

Save GeekaholicLin/dee46a68224a94543737c15b4b732b28 to your computer and use it in GitHub Desktop.
如何正确判断Javascript中的类型
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();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment