slice(8,-1)意思是从第8位开始(包含第8位)到最后一位之前(-1的意思就是最后一位,不包含最后一位);
Object.prototype.toString.call(boj)这个是用来判断数据类型,
如果boj是数字,得出的结果是[object Number],从零开始数,第8位就是N,最后一位的前一位就是r,所以取得Number;
如果boj是字符串,得出结果是[object String],第8位S,最后一位的前一位g,取得String
function type(boj){ return Object.prototype.toString.call(boj).slice(8,-1); } type(1)//"Number" type("abc")//"String"
获取obj的类型
function getObjType(obj){ //tostring will return a constructor with a different object var toString = Object.prototype.toString; var map = { '[object Boolean]' : 'boolean', '[object Number]' : 'number', '[object String]' : 'string', '[object Function]' : 'function', '[object Array]' : 'array', '[object Date]' : 'date', '[object RegExp]' : 'regExp', '[object Undefined]': 'undefined', '[object Null]' : 'null', '[object Object]' : 'object' }; // if obj is the instance of HTML elment if(obj instanceof Element) { return 'element'; } return map[toString.call(obj)]; }
or
function getObjType(obj){ //tostring will return a constructor name with a different obj var toString = Object.prototype.toString; var map = { Boolean : 'boolean', Number : 'number', String : 'string', Function : 'function', Array : 'array', Date : 'date', RegExp : 'regExp', Undefined: 'undefined', Null : 'null', Object : 'object' }; // if obj is the instance of HTML elment if(obj instanceof Element) { return 'element'; } return map[toString.call(obj).slice(8,-1)]; }