美文网首页
封装type方法

封装type方法

作者: 63537b720fdb | 来源:发表于2020-07-01 15:01 被阅读0次

原始值:
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
    }
}

相关文章

网友评论

      本文标题:封装type方法

      本文链接:https://www.haomeiwen.com/subject/sogcqktx.html