设为首页 加入收藏

TOP

兼容低版本JS的Array.map方法(一)
2017-10-10 14:39:30 】 浏览:3455
Tags:兼容 版本 Array.map 方法

前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽。后面回来查了下资料发现。Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的。

看如下兼容性实现方式:

  实现思路:1,先验证this对象,再将this用Object封装成obj。

                    2,获取封装后的obj的属性长度

                    3,验证是否有回调方法

                    4,根据obj的属性长度lengh生成新的数组,new Array(length)。

                    5,遍历obj对象,获取mapKey,mapValue,并将返回值添加到新数组arr中。

                    6,将整个新的数组返回。

   代码实现:

(function(){
    if(!Array.prototype.map) {
        Array.prototype.map = function(callback, args) {
            var arg , arr, index ;
 
            if(this == null) {
                throw new TypeError('this is null or not defined');
            }
 
            var obj = new Object(this);
            var len = obj >>> 0;  //获取obj的长度
 
            if(Object.prototype.toString.call(callback) != '[object Function]') {
                throw new TypeError(callback + 'is not a function');
            }
 
            if(args) {
                arg = args;
            }
            // 创建新数组,长度为原数组O长度len
            arr = new Array(len);
            index = 0;
 
            while(index < len) {
                var kValue, mappedValue;
                if(index in obj) {
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇图标字体库(用CSS样式生成搜索、.. 下一篇二维码关闭【parentNode】

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目