handler.isExtensible()
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.isExtensible()
Methode ist ein Trap für die [[IsExtensible]]
interne Objekt-Methode, welche von Operationen wie Object.isExtensible()
verwendet wird.
Probieren Sie es aus
Syntax
new Proxy(target, {
isExtensible(target) {
}
})
Parameter
Der folgende Parameter wird an die isExtensible()
-Methode übergeben. this
ist an den Handler gebunden.
target
-
Das Zielobjekt.
Rückgabewert
Die isExtensible()
-Methode muss ein Boolean
zurückgeben, das angibt, ob das Zielobjekt erweiterbar ist oder nicht. Andere Werte werden in Booleans umgewandelt.
Beschreibung
Abfangen von Operationen
Dieser Trap kann diese Operationen abfangen:
Oder jede andere Operation, die die [[IsExtensible]]
interne Methode aufruft.
Invarianten
Die [[IsExtensible]]
interne Methode des Proxys wirft einen TypeError
, wenn die Handler-Definition eine der folgenden Invarianten verletzt:
- Das Ergebnis muss dasselbe sein wie bei
Reflect.isExtensible()
auf dem Zielobjekt.
Beispiele
Abfangen von isExtensible
Der folgende Code fängt Object.isExtensible()
ab.
const p = new Proxy(
{},
{
isExtensible(target) {
console.log("called");
return true;
},
},
);
console.log(Object.isExtensible(p));
// "called"
// true
Der folgende Code verletzt die Invariante.
const p = new Proxy(
{},
{
isExtensible(target) {
return false;
},
},
);
Object.isExtensible(p); // TypeError is thrown
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-isextensible |
Browser-Kompatibilität
BCD tables only load in the browser