typeof方法重写与数组去重


-typeof:方法重写


	由于typeof方法存在一些问题,null一个原始值返回object,且没有办法区分出
包装类,所以我们要写一个更好的方法。

首先我们得把null单独列出来,然后写typeof返回结果为“object”的不同情况,有数组,对象还有包装类,这时我们想到用Object.prototype.toString的方法去执行,然后从返回的结果判断。巧妙新建一个对象,属性名称为toString方法后的结果。

function type(target) {
            var template = {
                "[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") {
                //数组,对象,包装类用toString()区别
                var str = Object.prototype.toString.call(target);
                return template[str];
            } else {
                return typeof target;
            }
        }

-数组去重(哈希)


利用对象的属性唯一性,将数组的值赋给对象属性!
在这里插入图片描述

//数组去重,要求在原型链上添加函数编程,利用对象的性质,哈希方法
        Array.prototype.unique = function() {
            var temp = {},
                arr = [],
                len = this.length;
            for (var i = 0; i < len; i++) {
                if (!temp[this[i]]) {
                    temp[this[i]] = "abc";
                    arr.push(this[i]);
                }
            }
            return arr;
        };
发布了37 篇原创文章 · 获赞 0 · 访问量 695

猜你喜欢

转载自blog.csdn.net/weixin_43704007/article/details/105144404
今日推荐