封装type方法
2020-07-01 本文已影响0人
63537b720fdb
原始值:
number string boolean undefined null
引用值:
对象 数组 function 正则
typeof():
number string boolean undefined object funciton
type方法的要求
1.原始值返回原始值
2.对象返回对象
3.function返回function
4.数组返回数组
5.包装类返回包装类 new Number() new String() new Boolean()
思路:
1.原始值用typeof()判断返回,null除外需要单独判断
2.function用typeof()判断返回object
3.区别数组和对象以及包装类,使用Object.prototype.toString.call(),将要判断的的对象传入call()中,改变this指向,返回该对象在原型链上调用的toString的结果
如下图,数组、对象、包装类调用原型链上的toStirng()返回的结果是唯一的
image.png
function type(target) {
var template = {
//数组、对象、包装类返回值的模板
"[object Array]" : "Array",
"[object Object]" : "Object",
"[object Number]" : "new Number()",
"[object String]" : "new String()",
"[object Boolean]" : "new Boolean()"
}
var ret = typeof(target);
if(target === null) {
return 'null';
}else if(ret == 'object') {
var str = Object.prototype.toString.call(target);
return template[str];
}else{
return ret; //返回剩下的原始值和function
}
}