Baseline Widely available
handler.has()
æ¹æ³æ¯é对 in
æä½ç¬¦çä»£çæ¹æ³ã
const handler1 = {
has(target, key) {
if (key[0] === "_") {
return false;
}
return key in target;
},
};
const monster1 = {
_secret: "easily scared",
eyeCount: 4,
};
const proxy1 = new Proxy(monster1, handler1);
console.log("eyeCount" in proxy1);
// Expected output: true
console.log("_secret" in proxy1);
// Expected output: false
console.log("_secret" in monster1);
// Expected output: true
è¯æ³
var p = new Proxy(target, {
has: function (target, prop) {},
});
åæ°
ä¸é¢æ¯ä¼ éç» has()
æ¹æ³çåæ°ãthis
ä¼è¢«ç»å®è³ handler ä¸ã
target
ç®æ 对象ã
prop
éè¦æ£æ¥æ¯å¦åå¨ç屿§ã
has
æ¹æ³è¿åä¸ä¸ª boolean 屿§çå¼ã
handler.has
æ¹æ³å¯ä»¥ç使¯é对 in
æä½çé©åã
è¿ä¸ªé©åå¯ä»¥æ¦æªä¸é¢è¿äºæä½ï¼
foo in proxy
foo in Object.create(proxy)
with
æ£æ¥: with(proxy) { (foo); }
Reflect.has()
妿è¿åäºä¸é¢è¿äºè§åï¼proxy å°ä¼æåº TypeError
:
ä¸é¢çä»£ç æ¦æªäº in
æä½ç¬¦ã
var p = new Proxy(
{},
{
has: function (target, prop) {
console.log("called: " + prop);
return true;
},
},
);
console.log("a" in p); // "called: a"; outputs true
ä¸é¢ç代ç è¿åäºçº¦æã
var obj = { a: 10 };
Object.preventExtensions(obj);
var p = new Proxy(obj, {
has: function (target, prop) {
return false;
},
});
"a" in p; // TypeError is thrown
è§è æµè§å¨å
¼å®¹æ§ å
¶ä»
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4