在Javascript数组中存储属性有什么缺点吗?
Are there any downsides to storing properties on Javascript arrays?
我知道Javascript数组实际上是对象,因为它们是对象,它们可以有属性。下面是一个例子:
var a = [1, 2, 3];
a.currentIndex = 2;
a.next = function() { ... };
a.prev = function() { ... };
a.length // returns 3
对我来说,这似乎会派上用场。我看到了许多原因,为什么您可能希望将状态或实用程序函数存储在实际数组本身,而不是存储在其他变量上。这甚至比将数组作为对象的属性,并将其他内容存储在该对象中要好。
我的问题是:
有人知道在Javascript数组上存储属性的任何问题吗?它能在所有浏览器中工作吗?有没有证据表明这将在未来的Javascript版本中改变?关于这是否是一种好的做法,有没有什么普遍的看法?
(注。对于记录,我不需要用For来迭代数组…在循环。我知道这样的循环也会包括属性)
既然你已经排除了for in
的问题,我在这里的回答是明确的"不"-没有问题需要担心。所有Array.prototype
方法将只适用于"索引"键(0…n)。
再说一遍,没有其他的警告了你就省省了
只是抛出一件事-没有"复制"数组原型函数将复制任何额外的属性,如果这是重要的,即.splice
, .slice
, concat
将给你新的"干净"数组没有currentIndex
等
是的,它适用于所有浏览器。它是有效的javascript(数组是对象)。可以想到使用Array构造函数而不是对象的许多原因,但如果这是您喜欢的编码风格,那么就使用它吧。
相关文章:
- 使用具有较长间隔的javascript setInerval有什么缺点吗?
- JQuery:所有按钮只使用一个监听器有什么缺点吗
- 在我的页面上包含jquery库有什么缺点吗
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- 在javascript上使用这个而不是上下文变量有什么缺点吗
- 使用JQuery加载功能有什么缺点吗?
- 将Jquery UI与AngularJS一起使用的优点和缺点是什么?
- 使用$firebaseObject有什么缺点
- 将所有脚本标记放在body标记的末尾有什么缺点吗
- 在typescript中一直使用.tsx而不是.ts有什么缺点吗
- 把你的整个网站放在主登录页的iframe里有什么缺点
- 在JavaScript对象构造函数中不使用这个有什么缺点吗?
- 在Javascript数组中存储属性有什么缺点吗?
- 使用localStorage代替Cookies有什么缺点吗?
- 使用ECMAscripts有什么缺点吗?访问对象属性
- 使用data属性来编辑javascript内容有什么缺点吗?
- 使用 $injector.get() 在 Angular 中获取我的依赖项有什么缺点吗?
- 在JavaScript中使用console.log有什么缺点吗
- 将javascript字符串隐式解析为整数有什么缺点吗?
- 使用 PHP 代理绕过 XMLHttpRequest 的同源策略有什么缺点?