handler.construct()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Die handler.construct()
-Methode ist eine Falle für die [[Construct]]
objektinterne Methode, die von Operationen wie dem new
-Operator verwendet wird. Damit die new-Operation auf dem resultierenden Proxy-Objekt gültig ist, muss das zur Initialisierung des Proxy verwendete Ziel selbst ein gültiger Konstruktor sein.
Probieren Sie es aus
Syntax
new Proxy(target, {
construct(target, argumentsList, newTarget) {
}
})
Parameter
Die folgenden Parameter werden an die construct()
-Methode übergeben. this
ist an den Handler gebunden.
target
-
Das Zielkonstruktorobjekt.
argumentsList
-
Ein
Array
, das die an den Konstruktor übergebenen Argumente enthält. newTarget
-
Der ursprünglich aufgerufene Konstruktor.
Rückgabewert
Die construct()
-Methode muss ein Objekt zurückgeben, das das neu erstellte Objekt repräsentiert.
Beschreibung
Abfangungen
Diese Falle kann folgende Operationen abfangen:
- Der
new
-Operator:new myFunction(...args)
Reflect.construct()
Oder jede andere Operation, die die [[Construct]]
interne Methode aufruft.
Invarianten
Beispiele
Abfangen des new-Operators
Der folgende Code fängt 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äß. Der target
bei der Proxy-Initialisierung muss für den new
-Operator selbst ein gültiger Konstruktor sein.
const p = new Proxy(
{},
{
construct(target, argumentsList, newTarget) {
return {};
},
},
);
new p(); // TypeError is thrown, "p" is not a constructor
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget |
Browser-Kompatibilität
BCD tables only load in the browser