Ответ 1
Из Веб-сайт Babel:
Из-за ограничений ES5, Прокси не могут быть переписаны или заполированы. См. Поддержку в различных механизмах JavaScript.
Я использую babelify версии 6.3.0, установленную на этап 0. ES6/ES7 работают отлично. Однако, когда я пытаюсь использовать Javascript прокси-функциональность:
set product(product={}) {
this._product = new Proxy({}, {})
}
Я получаю:
ReferenceError: Can't find variable: Proxy
Любые идеи?
Из Веб-сайт Babel:
Из-за ограничений ES5, Прокси не могут быть переписаны или заполированы. См. Поддержку в различных механизмах JavaScript.
Вы не можете проксировать полный объект со всеми ловушками, но вы можете создавать проксированные свойства для получения и установки по крайней мере.
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
Babel переводит код ES6/ES7 (при условии, что вы подключили соответствующие пресеты) в действительный код ES5.
Я боюсь, что нет возможности выразить прокси ES6 через синтаксис ES5.
Вы можете видеть, что прокси не имеют эквивалента на сайте es6-features. Там также предупреждение об этом в нижней части раздела "прокси" в документах Babel.