web-dev-qa-db-fra.com

Prise en charge du proxy Javascript dans Babel

J'utilise la version 6.3.0 de babelify réglée sur l'étape 0. ES6/ES7 fonctionnent très bien. Cependant, lorsque j'essaie d'utiliser Javascript fonctionnalité proxy :

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

Je reçois:

ReferenceError: Can't find variable: Proxy

Des idées?

22
Allyl Isocyanate

Depuis le site Babel :

En raison des limitations d'ES5, les proxys ne peuvent pas être transpilés ou polyfilled. Voir le support dans divers moteurs JavaScript.

31
Mike Cluck

Vous ne pouvez pas proxy un objet complet avec tous les pièges, mais vous pouvez créer des propriétés proxy pour get et set au moins.

var proxy = {}

Object.defineProperty(proxy, 'a', {
  get: function() { return bValue; },
  set: function(newValue) { bValue = newValue; }
});

Vous pouvez même l'enrouler autour d'une méthode

function proxyVar(obj, key, initVal) {
  Object.defineProperty(obj, key, {
    get: function() { return bValue*2; },
    set: function(newValue) { bValue = newValue; }
    value: initVal
  });
}

Puis:

var proxy = {}

proxyVar(proxy, 'a', 10)

console.log(proxy.a) // prints 20
proxy.a = 20
console.log(proxy.a) // prints 40
4
DiegoRBaquero

Babel traduit le code ES6/ES7 (en supposant que vous avez connecté les préréglages appropriés) en code ES5 valide.

Je crains qu'il n'y ait aucun moyen d'exprimer des proxys ES6 via la syntaxe ES5.

Vous pouvez voir que les procurations n'ont aucun équivalent sur site es6-features . Il y a aussi un avertissement à ce sujet au bas de la section 'proxies' des documents Babel.

2
everyonesdesign