关于javascript中给数组新注册方法的后遗症-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

关于javascript中给数组新注册方法的后遗症

2016-07-18 10:09:53 1995 2

我在一个页面的js的开头加入了以下代码

Array.prototype.search = function (name, value)

{
    for (var li in this) {
        if (this[li][name] == value) {
            return this[li];
        }
    }
    return false;
};


这个方法因为我用的挺多的才加入的,

但是加入了这个方法产生了一个问题 就是以后for in 循环数组的时候多了一个键值对!

最后一个键值对为:function (name, value)
{
    for (var li in this) {
        if (this[li][name] == value) {
            return this[li];
        }
    }
    return false;
}

这个怎么办???

取消 提交回答
全部回答(2)
  • zid
    2019-07-17 19:57:30

    因为for in会循环原型链,不单单是Array,你在任何object 的prototype上面加东西都会有你说的这种效果。办法就是用hasOwnProperty 判断一下,这也是一个遍历object的时候比较好的习惯

    0 0
  • a123456678
    2019-07-17 19:57:30
    bject.defineProperty(Array.prototype, "search", {
      enumerable: false,
      value: function (name, value) {
                for (var li in this) {
                    if (this[li][name] == value) {
                        return this[li];
                    }
                }
                return false;
            };
    });
    
    Array.prototype.search = function (name, value){
        for (var li in this) {
            if (this.hasOwnProperty(li)) {
                if (this[li][name] == value) {
                    return this[li];
                }
            }
        }
        return false;
    };
    0 0
添加回答
相关问答

1

回答

javascript如何遍历django传来的数组

2016-03-17 13:22:57 3149浏览量 回答数 1

1

回答

javascript如何遍历django传来的数组

2016-03-12 13:23:46 2010浏览量 回答数 1

1

回答

js怎么往数组里添加数据

2018-05-10 19:58:33 4626浏览量 回答数 1

1

回答

js怎么把数组变成字符串

2018-05-10 19:58:34 1234浏览量 回答数 1

1

回答

js怎么得到数组的下标

2018-05-10 19:58:35 1795浏览量 回答数 1

1

回答

js数组怎么接收

2018-05-10 19:58:37 1911浏览量 回答数 1

1

回答

js里怎么把对象存入数组

2018-05-10 19:58:37 13909浏览量 回答数 1

1

回答

js数组怎么排序

2018-05-10 19:58:42 1277浏览量 回答数 1

1

回答

js怎么判断是数组

2018-05-10 19:58:45 1663浏览量 回答数 1

1

回答

js怎么传递数组

2018-05-10 19:58:52 1752浏览量 回答数 1
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
JavaScript 语言在引擎级别的执行过程
立即下载
Javascript中的对象
立即下载
Javascript中的函数
立即下载