javascript - 修改一个JS核心对象不好吗?

标签 javascript

<分区>

Possible Duplicate:
Is it an anti-pattern to modify JavaScript's built-in prototypes?

我刚刚了解到可以修改 JavaScript 核心对象,但告诉我如何修改的同一篇文章建议我永远不应该这样做。

修改一个核心JS对象是不是坏事?如果是这样,这会导致什么问题?

例如,这是对 Array 对象的修改,它使我可以轻松地在数组中搜索给定值:

Array.prototype.search = function(val){
    var i;
    for (i = 0; i < this.length; i++){
        if (this[i] == val) {
            console.log("found: " + val);
            return true;
        }
    }
    console.log("didn't find it");
    return false;
};

这是文章:Advanced Javascript: Objects, Arrays, and Array-Like objects

最佳答案

是的,当修改所谓的宿主对象时,行为是未定义的。它可能有效(通常适用于 Array、String 和 Object 等对象),但可能会破坏某些东西。

但是,您应该永远不要修改ArrayObjectprototype,因为它会破坏 for(var key in element) 用于数组和对象,除非您在所有这些循环的开头包含 if(!element.hasOwnProperty(key)) continue;。 因此,即使您不使用 for..in 循环,也不要这样做。

关于javascript - 修改一个JS核心对象不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137133/

相关文章:

javascript - Angular js 网站刚刚停止工作

javascript - 如何以 Angular 记录元素?

javascript - JavaScript 警报值为 null 后

javascript - 如何更改点击时的href值

javascript - 如何使用 objection.js 和 knex.js 将新对象添加到表中?

javascript - KineticJS toImage 宽度和高度问题

javascript - 为什么 Firefox setInterval 回调参数与其他浏览器不同?

javascript - 如何在 Rails 出价中实现卖家可以在 24 小时内取消或接受或交易被取消的出价?

javascript - 如何告诉 firebase-admin 停止(运行测试时)?

javascript - 如何使用 jspdf 按每列设置单元格大小?