这是我的测试代码(使用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,为什么代理无法拦截看起来像整数的属性?这是一个实现错误还是它是如何指定的?是否有一种单独的方法来拦截数组索引,以便我可以实现自己的数组(例如稀疏数组)?
最佳答案
如果我正确读取 Node 更改日志,则 Node 0.6.18 仍在 V8 3.6.6 上运行,这是一个相当旧的版本(从 2011 年 10 月开始)。在该版本中,对代理的支持仍在进行中(与其他受支持的 Harmony 功能一样)。不要指望代理在 V8 3.8(从 2011 年 12 月起)之前能够正常运行。不幸的是,我无法告诉您 Node 的稳定版本何时会升级到更高版本。
关于node.js - ES6 代理无法拦截数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10762216/