Reflect.preventExtensions()
åºçº¿
广æ³å¯ç¨
èª 2016å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
éææ¹æ³ Reflect.preventExtensions() æ¹æ³é»æ¢æ°å±æ§æ·»å å°å¯¹è±¡ (ä¾å¦ï¼é²æ¢å°æ¥å¯¹å¯¹è±¡çæ©å±è¢«æ·»å å°å¯¹è±¡ä¸)ãè¯¥æ¹æ³ä¸ Object.preventExtensions()ç¸ä¼¼ï¼ä½æä¸äºä¸åç¹ã详æ
å¯è§ differencesã
å°è¯ä¸ä¸
const object1 = {};
console.log(Reflect.isExtensible(object1));
// Expected output: true
Reflect.preventExtensions(object1);
console.log(Reflect.isExtensible(object1));
// Expected output: false
è¯æ³
Reflect.preventExtensions(target)
åæ°
target-
黿¢æ©å±çç®æ 对象ã
è¿åå¼
è¿åä¸ä¸ª Boolean å¼è¡¨æç®æ 对象æ¯å¦æå被设置为ä¸å¯æ©å±ã
å¼å¸¸
æåºä¸ä¸ª TypeError é误ï¼å¦æ target 䏿¯ Objectã
æè¿°
Reflect.preventExtensions æ¹æ³é»æ¢æ°å±æ§æ·»å å°å¯¹è±¡ (ä¾å¦ï¼é²æ¢å°æ¥å¯¹å¯¹è±¡çæ©å±è¢«æ·»å å°å¯¹è±¡ä¸)ãè¯¥æ¹æ³ä¸ Object.preventExtensions() æ¹æ³ç¸ä¼¼ã
示ä¾
>ä½¿ç¨ Reflect.preventExtensions()
详æ
å¯è§ Object.preventExtensions().
// Objects are extensible by default.
var empty = {};
Reflect.isExtensible(empty); // === true
// ...but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // === false
ä¸ Object.preventExtensions() çä¸åç¹
å¦æè¯¥æ¹æ³ç target 忰䏿¯ä¸ä¸ªå¯¹è±¡ï¼æ¯åå§å¼ï¼ï¼é£ä¹å°é æä¸ä¸ª TypeError å¼å¸¸ã对äºObject.preventExtensions() æ¹æ³ï¼é对象ç target åæ°å°è¢«å¼ºå¶è½¬æ¢ä¸ºå¯¹è±¡ã
Reflect.preventExtensions(1);
// TypeError: 1 is not an object
Object.preventExtensions(1);
// 1
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-reflect.preventextensions> |