javascript - jQuery 是否保证与数组或对象的扩展原型(prototype)兼容?

标签 javascript jquery arrays object prototype

我想像下面的代码一样扩展数组和对象:


$(window).load(function() {
    Array.prototype.x = 3
    Object.prototype.y = 4

    var a = [1, 2]
    for (var i in a) {
        alert(i + ': ' + a[i])
    }
})

/*
[result]
0: 1
1: 2
x: 3
y: 4
*/

这段代码会对当前版本或 future 版本的 jQuery 中的 jQuery 操作造成任何麻烦吗?

最佳答案

使用Array.prototype,我认为你非常安全。我不认为任何地方都有明确的保证,但 jQuery 多年来一直与 Prototype 和 MooTools 共存于网站上,并且它们都扩展了 Array.prototype。我认为 jQuery 团队不想破坏与这些库的兼容性。

但是:永远不要扩展Object.prototype。这很可能会破坏 jQuery 自己的代码,并且几乎肯定也会破坏插件代码。大多数 for..in 循环假定 {} 没有可枚举属性。如果您添加到 Object.prototype,您就会使该假设无效。 (除非您使用新的 ECMAScript5 defineProperty 功能,该功能可让您将属性设置为不可枚举,但尚未得到广泛支持。不过,为了好玩,you can try it out here 。)

关于javascript - jQuery 是否保证与数组或对象的扩展原型(prototype)兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5786730/

相关文章:

c++ - 如何在 C++ 类中初始化可变大小数组?

javascript - jQuery 数据表、TableTools 插件按钮不可见

javascript - 导出异步等待变量并在 JS 中完成 "awaiting"后将其导入另一个文件

javascript - 如何在javascript中自动提交表单?

Javascript/jquery 从具有相同 rel 的元素创建数组?

javascript - 使用 AJAX 从数据库获取 JSON 数据时遇到问题

php - 使用AJAX插入数据库,无需刷新页面

javascript - 在数组中,如何找到给定浮点值的最接近的键?

python - 从 numpy 数组的一列中减去

javascript - JQuery 相当于 scriptaculous/prototype 的自动完成功能是什么?