我正在使用babelify版本6.3.0设置为第0阶段.ES6 / ES7工作得很好。但是,当我尝试使用Javascript的proxy functionality:
时set product(product={}) {
this._product = new Proxy({}, {})
}
我明白了:
ReferenceError: Can't find variable: Proxy
有什么想法吗?
答案 0 :(得分:27)
由于ES5的限制,代理无法进行转换或填充。请参阅各种JavaScript引擎中的支持。
答案 1 :(得分:4)
您无法使用所有陷阱代理完整对象,但您至少可以为get和set创建代理属性。
var proxy = {}
Object.defineProperty(proxy, 'a', {
get: function() { return bValue; },
set: function(newValue) { bValue = newValue; }
});
你甚至可以将它包裹在一个方法
中function proxyVar(obj, key, initVal) {
Object.defineProperty(obj, key, {
get: function() { return bValue*2; },
set: function(newValue) { bValue = newValue; }
value: initVal
});
}
然后:
var proxy = {}
proxyVar(proxy, 'a', 10)
console.log(proxy.a) // prints 20
proxy.a = 20
console.log(proxy.a) // prints 40
答案 2 :(得分:2)
Babel将ES6 / ES7代码(假设您已连接相应的预设)转换为有效的ES5代码。
我担心没有办法通过ES5语法表达ES6代理。
您可以看到代理在es6-features site上没有任何等价物。还有关于Babel文档in the bottom of 'proxies' section的警告。