From 39f2114f9797eb51994966c6bb8ff1814c9a4da8 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:36:08 +0100 Subject: unslug fr: move --- .../objets_globaux/proxy/handler/apply/index.html | 118 ---------------- .../proxy/handler/construct/index.html | 137 ------------------ .../proxy/handler/defineproperty/index.html | 144 ------------------- .../proxy/handler/deleteproperty/index.html | 113 --------------- .../objets_globaux/proxy/handler/get/index.html | 136 ------------------ .../handler/getownpropertydescriptor/index.html | 132 ------------------ .../proxy/handler/getprototypeof/index.html | 154 --------------------- .../objets_globaux/proxy/handler/has/index.html | 130 ----------------- .../objets_globaux/proxy/handler/index.html | 83 ----------- .../proxy/handler/isextensible/index.html | 123 ---------------- .../proxy/handler/ownkeys/index.html | 136 ------------------ .../proxy/handler/preventextensions/index.html | 124 ----------------- .../objets_globaux/proxy/handler/set/index.html | 125 ----------------- .../proxy/handler/setprototypeof/index.html | 136 ------------------ 14 files changed, 1791 deletions(-) delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/apply/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/construct/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/defineproperty/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/deleteproperty/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/get/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/getownpropertydescriptor/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/getprototypeof/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/has/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/isextensible/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/ownkeys/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/preventextensions/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/set/index.html delete mode 100644 files/fr/web/javascript/reference/objets_globaux/proxy/handler/setprototypeof/index.html (limited to 'files/fr/web/javascript/reference/objets_globaux/proxy/handler') diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/apply/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/apply/index.html deleted file mode 100644 index 21f1d44817..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/apply/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: handler.apply() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/apply -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply ---- -
{{JSRef}}
- -

La méthode handler.apply() représente une trappe pour un appel de fonctions.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-apply.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  apply: function(cible, thisArg, listeArguments) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode apply. Ici, this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
thisArg
-
L'argument {{jsxref("Opérateurs/L_opérateur_this","this")}} pour cet appel.
-
listeArguments
-
La liste d'arguments pour l'appel.
-
- -

Valeur de retour

- -

La méthode apply peut renvoyer n'importe quelle valeur.

- -

Description

- -

La méthode handler.apply est une trappe pour l'appel à une fonction.

- -

Interceptions

- -

Cette trappe intercepte les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy lèvera une exception TypeError :

- - - -

Exemples

- -

Dans l'exemple ci-dessous, on piège un appel de fonction.

- -
var p = new Proxy(function() {}, {
-  apply: function(target, thisArg, argumentsList) {
-    console.log("called: " + argumentsList.join(", "));
-    return argumentsList[0] + argumentsList[1] + argumentsList[2];
-  }
-});
-
-console.log(p(1, 2, 3)); // "called: 1, 2, 3"
-                         // 6
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist', '[[Call]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist', '[[Call]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.apply")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/construct/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/construct/index.html deleted file mode 100644 index 90eb5f0105..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/construct/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: handler.construct() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/construct -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct ---- -
{{JSRef}}
- -

La méthode handler.construct() est une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Afin que l'opération new puisse être valide sur le proxy correspondant, la cible utilisée doit avoir une méthode interne [[Construct]] (autrement dit, l'instruction new cible doit être valide).

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-construct.html", "taller")}}
- - - -

Syntaxe

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

Paramètres

- -

Les paramètres suivants sont passés à la méthode constructthis est ici lié au gestionnaire (handler).

- -
-
cible
-
L'objet cible.
-
listeArguments
-
La liste des arguments passés au constructeur.
-
newTarget
-
Le constructeur originellement appelé.
-
- -

Valeur de retour

- -

La méthode construct doit renvoyer un objet.

- -

Description

- -

La méthode handler.construct() est une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}.

- -

Interceptions

- -

Ce trappe intercepte les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple qui suit, on piège l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}.

- -
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 :

- -
var p = new Proxy(function() {}, {
-  construct: function(target, argumentsList) {
-    return 1;
-  }
-});
-
-new p(); // Une exception TypeError est levée
-
- -

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.

- -
var p = new Proxy({}, {
-  construct: function(target, argumentsList, newTarget){
-    return {};
-  }
-});
-
-new p(); // TypeError: p is not a constructor
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget', '[[Construct]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget', '[[Construct]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.construct")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/defineproperty/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/defineproperty/index.html deleted file mode 100644 index ea23d3c8e3..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/defineproperty/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: handler.defineProperty() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/defineProperty -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/defineProperty ---- -
{{JSRef}}
- -

La méthode handler.defineProperty() est une trappe pour {{jsxref("Object.defineProperty()")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-defineproperty.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  defineProperty: function(cible, propriété, descripteur) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode defineProperty. this est ici lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
propriété
-
Le nom ou le symbole ({{jsxref("Symbol")}}) de la propriété dont on veut modifier la description.
-
descripteur
-
Le descripteur de la propriété qui est à modifier ou à définir.
-
- -

Valeur de retour

- -

La méthode defineProperty() doit renvoyer un booléen qui indique si la propriété a correctement été définie sur la cible.

- -

Description

- -

La méthode handler.defineProperty() est une trappe pour {{jsxref("Object.defineProperty()")}}.

- -

Interceptions

- -

Cette trappe intercepte les opérations suivantes :

- - - -

Invariants

- -

Si les contraintes d'invariances suivantes ne sont pas respectées, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans le code suivant, on piège l'appel à {{jsxref("Object.defineProperty()")}}.

- -
var p = new Proxy({}, {
-  defineProperty: function(target, prop, descriptor) {
-    console.log("appelé avec : " + prop);
-  }
-});
-
-var desc = { configurable: true, enumerable: true, value: 10 };
-Object.defineProperty(p, "a", desc); // "appelé avec : a"
-
- -

Lorsqu'on appelle {{jsxref("Object.defineProperty()")}} ou {{jsxref("Reflect.defineProperty()")}}, le descripteur passé à la trappe defineProperty doit respecter une contrainte : seules les propriétés suivants sont utilisables, les propriétés non-standards seront ignorées :

- - - -
var p = new Proxy({}, {
-  defineProperty(target, prop, descriptor) {
-    console.log(descriptor);
-    return Reflect.defineProperty(target, prop, descriptor);
-  }
-});
-
-Object.defineProperty(p, "name, {
-  value: "proxy",
-  type: "custom"
-});
-// { value: "proxy" }
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc', '[[DefineOwnProperty]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc', '[[DefineOwnProperty]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.defineProperty")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/deleteproperty/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/deleteproperty/index.html deleted file mode 100644 index 15828b99b3..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/deleteproperty/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: handler.deleteProperty() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/deleteProperty -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty ---- -
{{JSRef}}
- -

La méthode handler.deleteProperty() est une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_delete", "delete")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-deleteproperty.html","taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  deleteProperty: function(cible, propriété) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode deleteProperty. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
propriété
-
Le nom ou le symbole ({{jsxref("Symbol")}}) de la propriété à supprimer.
-
- -

Valeur de retour

- -

La méthode deleteProperty() doit renvoyer un booléen qui indique si oui ou non la propriété a été supprimée.

- -

Description

- -

La méthode handler.deleteProperty() est une trappe permettant d'intercepter les opérations de l'opérateur {{jsxref("Opérateurs/L_opérateur_delete", "delete")}}.

- -

Interceptions

- -

Cette trappe peut intercepter les opérations suivantes :

- - - -

Invariants

- -

Si les invarians suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple qui suit, on intercepte les opérations de {{jsxref("Opérateurs/L_opérateur_delete", "delete")}}.

- -
var p = new Proxy({}, {
-  deleteProperty: function(cible, prop) {
-    console.log("appelée sur : " + prop);
-    return true;
-  }
-});
-
-delete p.a; // "appelée sur : a"
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.deleteProperty")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/get/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/get/index.html deleted file mode 100644 index 0173263d99..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/get/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: handler.get() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/get -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get ---- -
{{JSRef}}
- -

La méthode handler.get() est une trappe pour intercepter l'accès à la valeur d'une propriété.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-get.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  get: function(cible, propriété, récepteur) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode get. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
propriété
-
Le nom ou le symbole ({{jsxref("Symbol")}}) de la propriété qu'on souhaite obtenir.
-
récepteur
-
Le proxy ou un objet qui hérite du proxy.
-
- -

Valeur de retour

- -

La méthode get peut renvoyer n'importe quelle valeur.

- -

Description

- -

La méthode handler.get est une trappe pour intercepter l'accès à une propriété.

- -

Interceptions

- -

Cette trappe permet d'intercepter les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple suivant, on intercepte les accès aux propriétés :

- -
var p = new Proxy({}, {
-  get: function(cible, propriété, récepteur) {
-    console.log("appelée : " + propriété);
-    return 10;
-  }
-});
-
-console.log(p.a); // "appelée : a"
-                  // 10
-
- -

Le code suivant ne respecte pas l'invariant :

- -
var obj = {};
-Object.defineProperty(obj, "a", {
-  configurable: false,
-  enumerable: false,
-  value: 10,
-  writable: false
-});
-
-var p = new Proxy(obj, {
-  get: function(cible, propriété) {
-    return 20;
-  }
-});
-
-p.a; // exception TypeError levée
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver', '[[Get]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver', '[[Get]]')}}{{Spec2('ESDraft')}} 
- -

Compatiblité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.get")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/getownpropertydescriptor/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/getownpropertydescriptor/index.html deleted file mode 100644 index 457d906b81..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/getownpropertydescriptor/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: handler.getOwnPropertyDescriptor() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/getOwnPropertyDescriptor -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor ---- -
{{JSRef}}
- -

La méthode handler.getOwnPropertyDescriptor() est une trappe pour intercepter {{jsxref("Object.getOwnPropertyDescriptor()")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-getownpropertydescriptor.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  getOwnPropertyDescriptor: function(cible, prop) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode getOwnPropertyDescriptor. this est ici lié au gestionnaire (handler).

- -
-
cible
-
L'objet cible
-
prop
-
Le nom de la propriété dont on souhaite obtenir le descripteur.
-
- -

Valeur de retour

- -

La méthode getOwnPropertyDescriptor doit renvoyer un objet ou undefined.

- -

Description

- -

La méthode handler.getOwnPropertyDescriptor() est une trappe pour un proxy afin d'intercepter les opérations effectuées avec {{jsxref("Object.getOwnPropertyDescriptor()")}}.

- -

Interceptions

- -

Cette trappe permet d'intercepter :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy lèvera une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple qui suit, on intercepte {{jsxref("Object.getOwnPropertyDescriptor()")}}.

- -
var p = new Proxy({ a: 20 }, {
-  getOwnPropertyDescriptor: function(cible, prop) {
-    console.log("appelée : " + prop);
-    return { configurable: true, enumerable: true, value: 10 };
-  }
-});
-
-console.log(Object.getOwnPropertyDescriptor(p, "a").value); // "appelée : a"
-                                                            // 10
-
- -

L'exemple suivant ne respecte pas un invariant :

- -
var obj = { a: 10 };
-Object.preventExtensions(obj);
-var p = new Proxy(obj, {
-  getOwnPropertyDescriptor: function(cible, prop) {
-    return undefined;
-  }
-});
-
-Object.getOwnPropertyDescriptor(p, "a"); // Une exception TypeError est renvoyée
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p', '[[GetOwnProperty]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.getOwnPropertyDescriptor")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/getprototypeof/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/getprototypeof/index.html deleted file mode 100644 index 1b5f73d3db..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/getprototypeof/index.html +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: handler.getPrototypeOf() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/getPrototypeOf -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getPrototypeOf ---- -
{{JSRef}}
- -

La méthode handler.getPrototypeOf() représente une trappe pour la méthode interne [[GetPrototypeOf]].

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-getprototypeof.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(obj, {
-  getPrototypeOf(cible) {
-  ...
-  }
-});
-
- -

Paramètres

- -

Le paramètre suivant est passé à la méthode getPrototypeOf. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
- -

Valeur de retour

- -

La méthode getPrototypeOf doit renvoyer un objet ou null.

- -

Description

- -

Interceptions

- -

Cette trappe permet d'intercepter les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivant ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Utilisation simple

- -
var obj = {};
-var proto = {};
-var gestionnaire = {
-    getPrototypeOf(cible) {
-        console.log(cible === obj);   // true
-        console.log(this === gestionnaire); // true
-        return proto;
-    }
-};
-
-var p = new Proxy(obj, gestionnaire);
-console.log(Object.getPrototypeOf(p) === proto);    // true
-
- -

Cinq façons de déclencher la trappe getPrototypeOf

- -
var obj = {};
-var p = new Proxy(obj, {
-    getPrototypeOf(cible) {
-        return Array.prototype;
-    }
-});
-console.log(
-    Object.getPrototypeOf(p) === Array.prototype,  // true
-    Reflect.getPrototypeOf(p) === Array.prototype, // true
-    p.__proto__ === Array.prototype,               // true
-    Array.prototype.isPrototypeOf(p),              // true
-    p instanceof Array                             // true
-);
-
- -

Deux types d'exceptions

- -
var obj = {};
-var p = new Proxy(obj, {
-    getPrototypeOf(cible) {
-        return "toto";
-    }
-});
-Object.getPrototypeOf(p); // TypeError : "toto" n'est pas un objet ou null
-
-var obj = Object.preventExtensions({});
-var p = new Proxy(obj, {
-    getPrototypeOf(cible) {
-        return {};
-    }
-});
-Object.getPrototypeOf(p); // TypeError : on attend la même valeur pour le prototype
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-getprototypeof', '[[GetPrototypeOf]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-getprototypeof', '[[GetPrototypeOf]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.getPrototypeOf")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/has/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/has/index.html deleted file mode 100644 index faded452ad..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/has/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: handler.has() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/has -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has ---- -
{{JSRef}}
- -

La méthode handler.has() est une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_in", "in")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-has.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  has: function(cible, prop) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode has. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
prop
-
Le nom ou le symbole ({{jsxref("Symbol")}}) de la propriété dont on veut connaître l'existence.
-
- -

Valeur de retour

- -

La méthode has doit renvoyer une valeur booléenne.

- -

Description

- -

La méthode handler.has est une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_in", "in")}}.

- -

Interceptions

- -

Cette trappe permet d'intercepter les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy lèvera une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple qui suit, on intercepte l'opérateur {{jsxref("Opérateurs/L_opérateur_in", "in")}} :

- -
var p = new Proxy({}, {
-  has: function(cible, prop) {
-    console.log("appelée : " + prop);
-    return true;
-  }
-});
-
-console.log("a" in p); // "appelée : a"
-                       // true
-
- -

L'exemple suivant ne respecte pas un invariant :

- -
var obj = { a: 10 };
-Object.preventExtensions(obj);
-var p = new Proxy(obj, {
-  has: function(cible, prop) {
-    return false;
-  }
-});
-
-"a" in p; // TypeError levée
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p', '[[HasProperty]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p', '[[HasProperty]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.has")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/index.html deleted file mode 100644 index 0611c7bcd2..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Gestionnaire de Proxy (handler) -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler -tags: - - ECMAScript 2015 - - JavaScript - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy -translation_of_original: Web/JavaScript/Reference/Global_Objects/Proxy/handler ---- -
{{JSRef}}
- -

L'objet gestionnaire d'un proxy est un objet qui contient les trappes de captures (traps) pour le  {{jsxref("Proxy", "proxy", "", 1)}}.

- -

Méthodes

- -

Toutes ces trappes sont optionnelles. Si une trappe n'a pas été définie, le comportement par défaut sera de transmettre l'opération à la cible.

- -
-
{{jsxref("Objets_globaux/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}
-
Une trappe pour {{jsxref("Object.getPrototypeOf")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}
-
Une trappe pour {{jsxref("Object.setPrototypeOf")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/isExtensible", "handler.isExtensible()")}}
-
Une trappe pour {{jsxref("Object.isExtensible")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/preventExtensions", "handler.preventExtensions()")}}
-
Une trappe pour {{jsxref("Object.preventExtensions")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}
-
Une trappe pour {{jsxref("Object.getOwnPropertyDescriptor")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/defineProperty", "handler.defineProperty()")}}
-
Une trappe pour {{jsxref("Object.defineProperty")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/has", "handler.has()")}}
-
Une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_in", "in")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/get", "handler.get()")}}
-
Une trappe pour l'accès aux valeurs des propriétés.
-
{{jsxref("Objets_globaux/Proxy/handler/set", "handler.set()")}}
-
Une trappe pour la définition des valeurs des propriétés.
-
{{jsxref("Objets_globaux/Proxy/handler/deleteProperty", "handler.deleteProperty()")}}
-
Une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_delete", "delete")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/ownKeys", "handler.ownKeys()")}}
-
Une trappe pour {{jsxref("Object.getOwnPropertyNames")}} et {{jsxref("Object.getOwnPropertySymbols")}}.
-
{{jsxref("Objets_globaux/Proxy/handler/apply", "handler.apply()")}}
-
Une trappe pour l'appel d'une fonction.
-
{{jsxref("Objets_globaux/Proxy/handler/construct", "handler.construct()")}}
-
Une trappe pour l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}.
-
- -

Certaines trappes non standards sont désormais obsolètes et ont été supprimées.

- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ESDraft')}}La trappe pour enumerate a été retirée.
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/isextensible/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/isextensible/index.html deleted file mode 100644 index df26cad63d..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/isextensible/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: handler.isExtensible() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/isExtensible -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/isExtensible ---- -
{{JSRef}}
- -

La méthode handler.isExtensible() est une trappe pour intercepter les opérations de {{jsxref("Object.isExtensible()")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-isextensible.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  isExtensible: function(cible) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode isExtensible. this est ici lié au gestionnaire (handler).

- -
-
cible
-
L'objet cible.
-
- -

Valeur de retour

- -

La méthode isExtensible doit renvoyer une valeur booléenne.

- -

Description

- -

La méthode handler.isExtensible() est une trappe pour intercepter {{jsxref("Object.isExtensible()")}}.

- -

Interceptions

- -

Cette trappe intercepte les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception  {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple qui suit, on intercepte {{jsxref("Object.isExtensible()")}}.

- -
var p = new Proxy({}, {
-  isExtensible: function(cible) {
-    console.log("appelée");
-    return true;
-  }
-});
-
-console.log(Object.isExtensible(p)); // "appelée"
-                                     // true
-
- -

Le code suivante ne respecte pas l'invariant et entraîne donc une exception.

- -
var p = new Proxy({}, {
-  isExtensible: function(cible) {
-    return false;
-  }
-});
-
-Object.isExtensible(p); // TypeError est levée
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-isextensible', '[[IsExtensible]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-isextensible', '[[IsExtensible]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.isExtensible")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/ownkeys/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/ownkeys/index.html deleted file mode 100644 index b60a836ded..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/ownkeys/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: handler.ownKeys() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/ownKeys -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/ownKeys ---- -
{{JSRef}}
- -

La méthode handler.ownKeys() est une trappe pour {{jsxref("Object.getOwnPropertyNames()")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-ownkeys.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  ownKeys: function(cible) {
-  }
-});
-
- -

Paramètres

- -

Le paramètre suivant est passé à la méthode ownKeys. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
- -

Valeur de retour

- -

La méthode ownKeys doit renvoyer un objet énumérable.

- -

Description

- -

La méthode handler.ownKeys() est une trappe pour intercepter les opérations de {{jsxref("Object.getOwnPropertyNames()")}}.

- -

Interceptions

- -

Cette trappe permet d'intercepter les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple suivant, on intercepte l'action de {{jsxref("Object.getOwnPropertyNames()")}}.

- -
var p = new Proxy({}, {
-  ownKeys: function(target) {
-    console.log("appelée");
-    return ["a", "b", "c"];
-  }
-});
-
-console.log(Object.getOwnPropertyNames(p)); // "appelée"
-                                            // [ "a", "b", "c"]
-
- -

L'exemple suivant ne respecte pas l'ensemble des invariants :

- -
var obj = {};
-Object.defineProperty(obj, "a", {
-  configurable: false,
-  enumerable: true,
-  value: 10 }
-);
-
-var p = new Proxy(obj, {
-  ownKeys: function(cible) {
-    return [123, 12.5, true, false, undefined, null, {}, []];
-  }
-});
-
-console.log(Object.getOwnPropertyNames(p));
-// TypeError est levée
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys', '[[OwnPropertyKeys]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys', '[[OwnPropertyKeys]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.ownKeys")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/preventextensions/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/preventextensions/index.html deleted file mode 100644 index e62fa36d4e..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/preventextensions/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: handler.preventExtensions() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/preventExtensions -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/preventExtensions ---- -
{{JSRef}}
- -

La méthode handler.preventExtensions() est une trappe pour {{jsxref("Object.preventExtensions()")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-preventextensions.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  preventExtensions: function(cible) {
-  }
-});
-
- -

Paramètres

- -

Le paramètre suivant est passé à la méthode preventExtensions. this est lié au gestionnaire (handler).

- -
-
cible
-
L'objet cible.
-
- -

Valeur de retour

- -

La méthode preventExtensions doit renvoyer une valeur booléenne.

- -

Description

- -

La méthode handler.preventExtensions() est une trappe pour intercepter {{jsxref("Object.preventExtensions()")}}.

- -

Interceptions

- -

Cette trappe peut intercepter les opérations de :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une execption {{jsxref("TypeError")}} :

- - - -

Exemples

- -

On intercepte l'appel à {{jsxref("Object.preventExtensions()")}} dans l'exemple suivant :

- -
var p = new Proxy({}, {
-  preventExtensions: function(cible) {
-    console.log("appelé");
-    Object.preventExtensions(cible);
-    return true;
-  }
-});
-
-console.log(Object.preventExtensions(p)); // "appelé"
-                                          // true
-
- -

Le code suivant ne respecte pas l'invariant :

- -
var p = new Proxy({}, {
-  preventExtensions: function(cible) {
-    return true;
-  }
-});
-
-Object.preventExtensions(p); // TypeError est levée
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-preventextensions', '[[PreventExtensions]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-preventextensions', '[[PreventExtensions]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.preventExtensions")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/set/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/set/index.html deleted file mode 100644 index 11270be519..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/set/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: handler.set() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/set -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set ---- -
{{JSRef}}
- -

La méthode handler.set() est une trappe permettant d'intercepter les opérations visant à définir ou modifier la valeur d'une propriété.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-set.html", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  set: function(cible, propriété, valeur, récepteur) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode set. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
propriété
-
Le nom ou le symbole ({{jsxref("Symbol")}}) de la propriété à définir.
-
valeur
-
La nouvelle valeur à définir pour la propriété.
-
récepteur
-
L'objet intialement visé par l'affectation. Généralement ce sera le proxy lui-même. Le gestionnaire set peut également être appelé indirectement, via la chaîne de prototypes ou d'autres façons.
-
Par exemple, si on exécute l'instruction obj.nom = "Jean", et qu'obj n'est pas un proxy ni ne possède de propriété nom mais s'il possède un proxy dans sa chaîne de prototypes, le gestionnaire set sera appelé et obj sera passé en tant que récepteur.
-
- -

Valeur de retour

- -

La méthode set doit renvoyer une valeur booléenne. Elle renvoie true pour indiquer que l'affectation a réussi. Si la méthode set renvoie false et que l'affectation était exécutée dans du code en mode strict, une exception {{jsxref("TypeError")}} sera levée.

- -

Description

- -

La méthode handler.set est une trappe qui permet d'intercepter les opérations qui sont utilisées pour définir ou modifier la valeur d'une propriété.

- -

Interceptions

- -

Cette trappe permet d'intercepter les opérations suivantes :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Dans l'exemple qui suit, on intercepte la définition d'une nouvelle propriété.

- -
var p = new Proxy({}, {
-  set: function(target, prop, value, receiver) {
-    target[prop] = value;
-    console.log('property set: ' + prop + ' = ' + value);
-    return true;
-  }
-});
-
-console.log('a' in p);  // false
-
-p.a = 10;               // "property set: a = 10"
-console.log('a' in p);  // true
-console.log(p.a);       // 10
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.set")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/setprototypeof/index.html b/files/fr/web/javascript/reference/objets_globaux/proxy/handler/setprototypeof/index.html deleted file mode 100644 index 61c288637a..0000000000 --- a/files/fr/web/javascript/reference/objets_globaux/proxy/handler/setprototypeof/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: handler.setPrototypeOf() -slug: Web/JavaScript/Reference/Objets_globaux/Proxy/handler/setPrototypeOf -tags: - - ECMAScript 2015 - - JavaScript - - Méthode - - Proxy - - Reference -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/setPrototypeOf ---- -
{{JSRef}}
- -

La méthode handler.setPrototypeOf() est une trappe pour intercepter {{jsxref("Object.setPrototypeOf()")}}.

- -
{{EmbedInteractiveExample("pages/js/proxyhandler-setprototypeof.html", "taller", "taller")}}
- - - -

Syntaxe

- -
var p = new Proxy(cible, {
-  setPrototypeOf: function(cible, prototype) {
-  }
-});
-
- -

Paramètres

- -

Les paramètres suivants sont passés à la méthode setPrototypeOf. this est lié au gestionnaire.

- -
-
cible
-
L'objet cible.
-
prototype
-
Le nouveau prototype de l'objet ou null.
-
- -

Valeur de retour

- -

La méthode setPrototypeOf renvoie true si la propriété interne [[Prototype]] a bien été modifiée et false sinon.

- -

Description

- -

La méthode handler.setPrototypeOf est une trappe utilisée pour intercepter les opérations de {{jsxref("Object.setPrototypeOf()")}}.

- -

Interceptions

- -

Cette trappe permet d'intercepter :

- - - -

Invariants

- -

Si les invariants suivants ne sont pas respectés, le proxy renverra une exception {{jsxref("TypeError")}} :

- - - -

Exemples

- -

Si on souhaite interdire la définition d'un nouveau prototype pour un objet, on peut utiliser une méthode setPrototypeOf qui renvoie false ou qui génère une exception.

- -

Avec cette première approche, toute opération qui voudra modifier le prototype génèrera une exception. On aura par exemple {{jsxref("Object.setPrototypeOf()")}} qui créera et lèvera l'exception TypeError. Si la modification est effectuée par une opération qui ne génère pas d'exception en cas d'échec (comme  {{jsxref("Reflect.setPrototypeOf()")}}), aucune exception ne sera générée.

- -
var handlerReturnsFalse = {
-    setPrototypeOf(target, newProto) {
-        return false;
-    }
-};
-
-var newProto = {}, target = {};
-
-var p1 = new Proxy(target, handlerReturnsFalse);
-Object.setPrototypeOf(p1, newProto);
-// lève une TypeError
-Reflect.setPrototypeOf(p1, newProto);
-// renvoie false
-
- -

Avec cette seconde approche, toute tentative de modification génèrera une exception. On utilisera celle-ci lorsqu'on souhaite qu'une erreur se produisent, y compris pour les opérations qui ne génèrent habituellement pas d'exception ou si on souhaite générer une exception sur mesure.

- -
var handlerThrows = {
-    setPrototypeOf(target, newProto) {
-        throw new Error("erreur custom");
-    }
-};
-
-var newProto = {}, target = {};
-
-var p2 = new Proxy(target, handlerThrows);
-Object.setPrototypeOf(p2, newProto);
-// lève une exception new Error("erreur custom")
-Reflect.setPrototypeOf(p2, newProto);
-// lève une exception new Error("erreur custom")
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v', '[[SetPrototypeOf]]')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v', '[[SetPrototypeOf]]')}}{{Spec2('ESDraft')}} 
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.builtins.Proxy.handler.setPrototypeOf")}}

- -

Voir aussi

- - -- cgit v1.2.3-54-g00ecf