为了访问数组中的数据,我创建了一个enum
-like 变量,以使字段具有人类可读的标识符。
var columns = { first: 0, second: 1 };
var array = ['first', 'second'];
var data = array[columns.first];
当我发现Object.freeze
我想将其用于枚举以使其无法更改时,我希望 VM 能够利用此信息来发挥其优势。
事实证明,测试在 Chrome 和 Node 上变慢了,但在 Firefox 上稍快(与按数字直接访问相比)。
该代码可在此处获得:http: //jsperf.com/array-access-via-enum
以下是 Node 的基准测试(对应于 JSPerf 测试):
fixed Number: 12ms
enum: 12ms
frozenEnum: 85ms
V8 是否还没有一个很好的实现,或者这种方法对于我的用例有什么不理想的地方吗?