ES6代理不能拦截数组索引

这是我的testing代码(要使用node --harmony-proxies foo.js运行node --harmony-proxies foo.js

 var a = Proxy.create({ get : function (proxy, prop) { return 5 } }) console.log(a['foo']) console.log(a.length) console.log(a['10']) console.log(a[10]) 

为什么最后两行无法打印5,为什么代理无法截取像整数一样的属性? 它是一个实现错误还是它是如何指定的? 是否有一个单独的方式来截取数组索引,所以我可以实现我自己的数组(例如稀疏数组)?

如果我正确读取节点更新日志,那么节点0.6.18仍然在V8 3.6.6上运行,这是一个相当旧的版本(从2011年10月起)。 在那个版本中,对代理的支持仍在进行中(另一个支持Harmonyfunction)。 不要期望代理在V8 3.8(从2011年12月)之前正常运行。 不幸的是,我不能告诉你什么时候稳定版本的节点将会升级。

正如A. Rossberg所指出的那样,这个bug(以及其他一些showstopper)在V8 3.8中得到修复(0.7.x节点相当稳定,0.8.x接近版本)。 如果你正在使用代理服务器,还是有一些问题需要注意。 这个github问题有一个相当不错的快速概述: https : //github.com/tvcutsem/harmony-reflect/issues/4

Interesting Posts