使用 Array.prototype 为array添加方法后,获取key数目不对的问题

Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } };

如上,我添加了这么一个remove方法,结果Object.keys获取到的数目就都+1了。

比如使用Object.keys获取到的key:

[ 'carModelId',
  'exColorId',
  'function (val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }' ]

里面多了一个,就是上面所加的remove代码。这个还真不好筛选。如何解决呢?

阅读 1.4k
1 个回答

建议多贴一点代码
Object.keys获取的是实例属性,怎么会把原型中的给整出来了?
实在不行这样

Object.defineProperty(Array.prototype, 'remove', {
    enumerable: false,
    value: function(val) {
        var index = this.indexOf(val);
        if (index > -1) {
            this.splice(index, 1);
        }
    }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏