| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit September 2016 browserbergreifend verfgbar.
Die handler.construct() Methode ist ein Trap fr die [[Construct]] interne Methode des Objekts, die von Operationen wie dem new Operator verwendet wird. Damit die neue Operation auf dem resultierenden Proxy-Objekt gltig ist, muss das Ziel, das zur Initialisierung des Proxy verwendet wird, selbst ein gltiger Konstruktor sein.
function Monster(disposition) {
this.disposition = disposition;
}
const handler = {
construct(target, args) {
console.log(`Creating a ${target.name}`);
// Expected output: "Creating a monster"
return new target(...args);
},
};
const ProxiedMonster = new Proxy(Monster, handler);
console.log(new ProxiedMonster("fierce").disposition);
// Expected output: "fierce"
new Proxy(target, {
construct(target, argumentsList, newTarget) {
}
})
Die folgenden Parameter werden an die construct() Methode bergeben. this ist an den Handler gebunden.
targetDas Ziel-Konstruktor-Objekt.
argumentsListEin Array, das die an den Konstruktor bergebenen Argumente enthlt.
newTargetDer ursprnglich aufgerufene Konstruktor.
Die construct() Methode muss ein Objekt zurckgeben, das das neu erstellte Objekt darstellt.
Dieser Trap kann folgende Operationen abfangen:
new Operator: new myFunction(...args)Reflect.construct()Oder jede andere Operation, die die [[Construct]] interne Methode aufruft.
Die [[Construct]] interne Methode des Proxys wirft einen TypeError, wenn die Definition des Handlers eine der folgenden Invarianten verletzt:
target muss selbst ein Konstruktor sein.Object sein.Der folgende Code fngt den new Operator ab.
const p = new Proxy(function () {}, {
construct(target, argumentsList, newTarget) {
console.log(`called: ${argumentsList}`);
return { value: argumentsList[0] * 10 };
},
});
console.log(new p(1).value); // "called: 1"
// 10
Der folgende Code verletzt die Invariante.
const p = new Proxy(function () {}, {
construct(target, argumentsList, newTarget) {
return 1;
},
});
new p(); // TypeError is thrown
Der folgende Code initialisiert den Proxy unsachgem. Das target bei der Proxy-Initialisierung muss selbst ein gltiger Konstruktor fr den new Operator sein.
const p = new Proxy(
{},
{
construct(target, argumentsList, newTarget) {
return {};
},
},
);
new p(); // TypeError is thrown, "p" is not a constructor
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |