我知道Javascript数组实际上是对象,并且因为它们是对象,所以它们可以具有属性。这是一个例子:
var a = [1, 2, 3];
a.currentIndex = 2;
a.next = function() { ... };
a.prev = function() { ... };
a.length // returns 3
对我来说,这似乎非常方便。我看到了许多为什么您可能希望将状态或实用函数存储在实际数组本身而不是其他变量上的原因。它甚至看起来比将数组作为对象的属性并将其他内容存储在该对象上更好。
这是我的问题:
有人知道在 Javascript 数组上存储属性有什么问题吗?它适用于所有浏览器吗?是否有任何证据表明这会随着 Javascript 的 future 版本而改变?对于这是否是一个好的做法有什么普遍的看法吗?
(另外,郑重声明,我不需要使用 for...in 循环迭代数组。我知道这样的循环也会包含属性)
最佳答案
既然您已经排除了 for in
问题,我在这里的回答是明确的“否” - 没有问题需要担心。所有 Array.prototype 方法仅适用于“索引”键 (0...n)。
这里最好的例子是众所周知的 jQuery 库,它也使用类数组对象来存储 DOM 节点,但它也有许多附加到该对象的方法(jQuery 使用那里的原型(prototype))。但是,其他库(例如 Zepto)只是将这些方法直接放在“数组”对象本身上。
再说一次,不,没有其他警告,你可以不用这样做。
关于javascript - 在 Javascript 数组上存储属性有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8632909/