封装一个type方法,用来判断值的类型
- 思路
1.首先判断是原始值还是引用值
用typeof方法
2.区分引用值
用toString方法
话不多说,上代码,上注释
function type(target) {
var ret = typeof(target);//简化代码
var tem = { //tem的作用是方便后面做比较
'[object Array]':'array',//数组类型引用值
'[object Object]':'object',//对象类型引用值
'[object Number]':'number - object',//包装类:数字类型
'[object String]':'string - object',//包装类:字符串类型
'[object Boolean]':'boolean - object',//包装类:布尔类型
}
if (target === null) {//这一步是因为typeof类型有缺陷,typeof(null)-->返回"object",因此要排除掉
return null;
}
if(ret == 'object'){//这一步判断target是否为引用值
var str = Object.prototype.toString.call(target);//使得str这个变量成为 target调用toString方法后的返回值
return tem[str];//这里首先看str这个返回值等于上面对象tem里哪一个属性,然后返回对象tem那个对应属性的属性值,就能确切的返回target的数据类型
}else{
return ret;//当target为原始值时,直接返回target的typeof返回值
}
//这里本来要判断function(){}的,但返回的是它本身,else那里面的代码
}
在后台:
type(new Number(22))
"number - object"
type(null)
null
type('wzy')
"string"
这道题不难,只要思路有了,就能写个大概,最后再完善一下就好了