是否可以在 Javascript 中创建一个长度保证保持不变的数组?
For example, the array A
is created with length 2. Subsequently, any attempt to call A.push()
or A.pop()
, or set the value of A[5]
会失败。 A.length
永远是 2。
这是类型数组(例如 Float32Array
)已经工作的方式。它们有固定的尺寸。但我想要一种在常规数组上获得相同行为的方法。
对于我的具体情况,我想创建一个固定长度的数组,其中每个条目都是一个对象。但我仍然想知道一般问题的答案。
原文由 Daniel Howard 发布,翻译遵循 CC BY-SA 4.0 许可协议
更新:
Object.seal (ES2015 的一部分)将做到这一点:
原答案:
几乎。正如 titusfx 所建议的那样,您可以冻结对象:
但是,您无法更改冻结对象的值。如果你有一个对象数组,这可能不是问题,因为你仍然可以更改对象的值。
对于数字数组,当然有 类型化数组。
Object.freeze
是 ES2015 的一部分, 但大多数浏览器似乎都支持它,包括 IE9 。您当然可以对其进行功能测试:if(Object.freeze) { Object.freeze(obj); }