Baseline Widely available
handler.ownKeys()
æ¹æ³ç¨äºæ¦æª Reflect.ownKeys()
.
const monster1 = {
_age: 111,
[Symbol("secret")]: "I am scared!",
eyeCount: 4,
};
const handler1 = {
ownKeys(target) {
return Reflect.ownKeys(target);
},
};
const proxy1 = new Proxy(monster1, handler1);
for (const key of Object.keys(proxy1)) {
console.log(key);
// Expected output: "_age"
// Expected output: "eyeCount"
}
è¯æ³
var p = new Proxy(target, {
ownKeys: function (target) {},
});
åæ°
ä¸é¢çåæ°è¢«ä¼ éç» ownKeysãthis
被ç»å®å¨ handler
ä¸ã
target
ç®æ 对象ã
ownKeys
æ¹æ³å¿
é¡»è¿åä¸ä¸ªå¯æä¸¾å¯¹è±¡ã
handler.ownKeys()
æ¹æ³ç¨äºæ¦æª Reflect.ownKeys()
.
妿è¿åäºä¸é¢ç约æï¼proxy å°æåºé误 TypeError
:
ownKeys
çç»æå¿
é¡»æ¯ä¸ä¸ªæ°ç»ãString
ï¼è¦ä¹æ¯ä¸ä¸ª Symbol
.ä¸é¢çä»£ç æ¦æª Object.getOwnPropertyNames()
.
var p = new Proxy(
{},
{
ownKeys: function (target) {
console.log("called");
return ["a", "b", "c"];
},
},
);
console.log(Object.getOwnPropertyNames(p)); // "called"; outputs [ 'a', 'b', 'c' ]
ä¸é¢ç代ç è¿åäºçº¦å®
var obj = {};
Object.defineProperty(obj, "a", {
configurable: false,
enumerable: true,
value: 10,
});
var p = new Proxy(obj, {
ownKeys: function (target) {
return [123, 12.5, true, false, undefined, null, {}, []];
},
});
console.log(Object.getOwnPropertyNames(p));
// TypeError: proxy [[OwnPropertyKeys]] å¿
é¡»è¿åä¸ä¸ªæ°ç»
// æ°ç»å
ç´ ç±»ååªè½æ¯ String æ Symbol
è§è æµè§å¨å
¼å®¹æ§ åè§
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