Подтвердить что ты не робот

Поддержка прокси-сервера Javascript в Babel

Я использую babelify версии 6.3.0, установленную на этап 0. ES6/ES7 работают отлично. Однако, когда я пытаюсь использовать Javascript прокси-функциональность:

set product(product={}) {
  this._product = new Proxy({}, {})
}

Я получаю:

ReferenceError: Can't find variable: Proxy

Любые идеи?

4b9b3361

Ответ 1

Из Веб-сайт Babel:

Из-за ограничений ES5, Прокси не могут быть переписаны или заполированы. См. Поддержку в различных механизмах JavaScript.

Ответ 2

Вы не можете проксировать полный объект со всеми ловушками, но вы можете создавать проксированные свойства для получения и установки по крайней мере.

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

Ответ 3

Babel переводит код ES6/ES7 (при условии, что вы подключили соответствующие пресеты) в действительный код ES5.

Я боюсь, что нет возможности выразить прокси ES6 через синтаксис ES5.

Вы можете видеть, что прокси не имеют эквивалента на сайте es6-features. Там также предупреждение об этом в нижней части раздела "прокси" в документах Babel.