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

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

Beispiele

Abfangen von isExtensible

Der folgende Code fängt Object.isExtensible() ab.

js
const p = new Proxy(
  {},
  {
    isExtensible(target) {
      console.log("called");
      return true;
    },
  },
);

console.log(Object.isExtensible(p));
// "called"
// true

Der folgende Code verletzt die Invariante.

js
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

Siehe auch