Reflect.getOwnPropertyDescriptor()
åºçº¿
广æ³å¯ç¨
èª 2016å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
éææ¹æ³ Reflect.getOwnPropertyDescriptor() ä¸ Object.getOwnPropertyDescriptor() æ¹æ³ç¸ä¼¼ã妿å¨å¯¹è±¡ä¸åå¨ï¼åè¿åç»å®ç屿§ç屿§æè¿°ç¬¦ãå¦åè¿å undefinedã
è¯æ³
Reflect.getOwnPropertyDescriptor(target, propertyKey)
åæ°
target-
éè¦å¯»æ¾å±æ§çç®æ 对象ã
propertyKey-
è·åèªå·±ç屿§æè¿°ç¬¦ç屿§çåç§°ã
è¿åå¼
妿屿§åå¨äºç»å®çç®æ 对象ä¸ï¼åè¿å屿§æè¿°ç¬¦ï¼å¦åï¼è¿å undefinedã
å¼å¸¸
æè¿°
Reflect.getOwnPropertyDescriptoræ¹æ³è¿åä¸ä¸ªå±æ§æè¿°ç¬¦ï¼å¦æç»å®ç屿§åå¨äºå¯¹è±¡ä¸ï¼å¦åè¿å undefined ãä¸ Object.getOwnPropertyDescriptor() çå¯ä¸ä¸åå¨äºå¦ä½å¤çéå¯¹è±¡ç®æ ã
示ä¾
>ä½¿ç¨ Reflect.getOwnPropertyDescriptor()
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "x");
// {value: "hello", writable: true, enumerable: true, configurable: true}
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "y");
// undefined
Reflect.getOwnPropertyDescriptor([], "length");
// {value: 0, writable: true, enumerable: false, configurable: false}
ä¸ Object.getOwnPropertyDescriptor() çä¸åç¹
å¦æè¯¥æ¹æ³ç第ä¸ä¸ªåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡ï¼ä¸ä¸ªåå§å¼ï¼ï¼é£ä¹å°é æ TypeError é误ãèå¯¹äº Object.getOwnPropertyDescriptorï¼é对象ç第ä¸ä¸ªåæ°å°è¢«å¼ºå¶è½¬æ¢ä¸ºä¸ä¸ªå¯¹è±¡å¤çã
Reflect.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not non-null object
Object.getOwnPropertyDescriptor("foo", 0);
// { value: "f", writable: false, enumerable: true, configurable: false }
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-reflect.getownpropertydescriptor> |