[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct [Back]  [Original]

handler.construct() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

handler.construct()

Baseline Large disponibilit

Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.

La mthode handler.construct() est une trappe pour l'oprateur new. Afin que l'opration new puisse tre valide sur le proxy correspondant, la cible utilise doit avoir une mthode interne [[Construct]] (autrement dit, l'instruction new cible doit tre valide).

Dans cet article

Exemple interactif

function monster1(disposition) {
  this.disposition = disposition;
}

const handler1 = {
  construct(target, args) {
    console.log(`Creating a ${target.name}`);
    // Expected output: "Creating a monster1"

    return new target(...args);
  },
};

const proxy1 = new Proxy(monster1, handler1);

console.log(new proxy1("fierce").disposition);
// Expected output: "fierce"

Syntaxe

js
var p = new Proxy(cible, {
  construct: function (cible, listeArguments, newTarget) {},
});

Paramtres

Les paramtres suivants sont passs la mthode construct. this est ici li au gestionnaire (handler).

cible

L'objet cible.

listeArguments

La liste des arguments passs au constructeur.

newTarget

Le constructeur originellement appel.

Valeur de retour

La mthode construct doit renvoyer un objet.

Description

La mthode handler.construct() est une trappe pour l'oprateur new.

Interceptions

Ce trappe intercepte les oprations suivantes :

Invariants

Si les invariants suivants ne sont pas respects, le proxy renverra une exception TypeError :

  • Le rsultat doit tre un Object.

Exemples

Dans l'exemple qui suit, on pige l'oprateur new.

js
var p = new Proxy(function () {}, {
  construct: function (target, argumentsList) {
    console.log("called: " + argumentsList.join(", "));
    return { value: argumentsList[0] * 10 };
  },
});

console.log(new p(1).value); // "appel sur : 1"
// 10

Dans cette version, on ne respecte pas la contrainte d'invariance :

js
var p = new Proxy(function () {}, {
  construct: function (target, argumentsList) {
    return 1;
  },
});

new p(); // Une exception TypeError est leve

Dans le code qui suit, le proxy n'est pas correctement initialis. La cible du proxy doit tre un constructeur valide qui puisse tre utilis avec new.

js
var p = new Proxy(
  {},
  {
    construct: function (target, argumentsList, newTarget) {
      return {};
    },
  },
);

new p(); // TypeError: p is not a constructor

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page