| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/has | [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.has() Methode ist eine Falle fr die [[HasProperty]] Objekt-internen Methode, die von Operationen wie dem in Operator verwendet wird.
const handler = {
has(target, key) {
if (key[0] === "_") {
return false;
}
return key in target;
},
};
const monster = {
_secret: "easily scared",
eyeCount: 4,
};
const proxy = new Proxy(monster, handler);
console.log("eyeCount" in proxy);
// Expected output: true
console.log("_secret" in proxy);
// Expected output: false
console.log("_secret" in monster);
// Expected output: true
new Proxy(target, {
has(target, property) {
}
})
Die folgenden Parameter werden an die has() Methode bergeben. this ist an den Handler gebunden.
Die has() Methode muss einen Boolean zurckgeben, der anzeigt, ob die Eigenschaft existiert oder nicht. Andere Werte werden zu Booleans konvertiert.
Diese Falle kann folgende Operationen abfangen:
in Operator: foo in proxywith berprfung: with(proxy) { (foo); }Reflect.has()Oder jede andere Operation, die die [[HasProperty]] interne Methode aufruft.
Die [[HasProperty]] interne Methode des Proxys wirft einen TypeError, wenn die Handler-Definition eine der folgenden Invarianten verletzt:
Reflect.getOwnPropertyDescriptor() configurable: false fr die Eigenschaft auf target zurckgibt, muss die Falle true zurckgeben.Reflect.isExtensible() false fr target zurckgibt und Reflect.getOwnPropertyDescriptor() einen Eigenschafts-Deskriptor fr die Eigenschaft auf target zurckgibt, muss die Falle true zurckgeben.Der folgende Code fngt den in Operator ab.
const p = new Proxy(
{},
{
has(target, prop) {
console.log(`called: ${prop}`);
return true;
},
},
);
console.log("a" in p);
// "called: a"
// true
Der folgende Code verletzt eine Invariante.
const obj = { a: 10 };
Object.preventExtensions(obj);
const p = new Proxy(obj, {
has(target, prop) {
return false;
},
});
"a" in p; // TypeError is thrown
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p |
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 |