区分类型方法

这里用到了原型链上的toString

这是因为toString为Object的原型方法,而Array ,function等类型作为Object的实例,都重写了toString方法。不同的对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法(function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串.....),而不会去调用Object上原型toString方法(返回对象的具体类型),所以采用obj.toString()不能得到其对象类型,只能将obj转换为字符串类型;因此,在想要得到对象的具体类型时,应该调用Object上原型toString方法。

function type(target){
            var temp={
                "[object Array]" : "array",
                "[object Object]" : 'object',
                '[object Number]' : 'number - object',
                '[object Boolean]' : 'boolean - object',
                '[object String]' : 'string - object'
            }
            if(target === null){
                return "null";
            }
            if(typeof(target)=='object'){
                var str =Object.prototype.toString.call(target);
                return temp[str]
            }else{
                return typeof target
            }
            
            
            }

你可能感兴趣的:(区分类型方法)