这里封装两个函数
一个是 typeof类型判断
typeof对于 null、new Boolean、new Array 这些通通返回 “object”
下面来封装一个精确类型判断
这里会用到 Object.prototype.toString 方法
function type(target){
// 首先定义一个对象,里面包含精确类型判断
var temp = {
"[object Object]": "object",
"[object Array]": "object - array",
"[object Number]": "object - number",
"[object String]": "object - string",
"[object Boolean]": "object - boolean"
}
// 首先处理一下 null ,因为以前 null 代表空对象 所有 null 会返回 “object”
if(target === null){
return "null";
}
// 接下来处理那些返回 "object"
if(typeof(target) == "object){
var objStr = Object.prototype.toString.call(target);
return temp[objStr};
// 把 objStr 作为键 ,去之前定义好的temp里找到值, 并返回
}else{
// 其他正常的直接返回
return typeof(target);
}
}
第二个封装的是 判断二维数组中是否有 该值
function arrIn(target, array){
var result = false;
// 这里我也用到了 Object.prototype.toString 方法 所有先写一下值
var arr = "[object Array]";
var objStr = Object.prototype.toString;
// 查看数组中的每一位
for(var i = 0, arrLen = array.length; i < arrLen; i++){
// 如果数组中有该数 就返回true
if(array[i] === target){
return result = true;
}else if(objStr.call(array[i]) == arr){
// 如果一维数组中没有该值 那么就判断是否有 二维数组
for(var j = 0, arrILen = array[i].length; j < arrILen; j++){
if(array[i][j] == target){
return result = true;
}
}
}
}
// 如果都没 返回false
return result;
}