Object.isExtensible()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Object.isExtensible() éææ¹æ³å¤æä¸ä¸ªå¯¹è±¡æ¯å¦æ¯å¯æ©å±çï¼æ¯å¦å¯ä»¥å¨å®ä¸é¢æ·»å æ°ç屿§ï¼ã
å°è¯ä¸ä¸
const object1 = {};
console.log(Object.isExtensible(object1));
// Expected output: true
Object.preventExtensions(object1);
console.log(Object.isExtensible(object1));
// Expected output: false
è¯æ³
Object.isExtensible(obj)
åæ°
obj-
è¦æ£æ¥ç对象ã
è¿åå¼
æç¤ºç»å®å¯¹è±¡æ¯å¦å¯æ©å±çä¸ä¸ªå¸å°å¼ã
æè¿°
é»è®¤æ
åµä¸ï¼å¯¹è±¡æ¯å¯æ©å±çï¼å¯ä»¥åå®ä»¬æ·»å æ°å±æ§ï¼å¹¶ä¸å®ä»¬ç [[Prototype]] å¯ä»¥è¢«éæ°èµå¼ãå¯ä»¥ä½¿ç¨ Object.preventExtensions()ãObject.seal()ãObject.freeze() æ Reflect.preventExtensions() ä¸ç任䏿¹æ³å°å¯¹è±¡æ 记为ä¸å¯æ©å±ã
示ä¾
>ä½¿ç¨ Object.isExtensible
// æ°å¯¹è±¡æ¯å¯æå±çã
const empty = {};
Object.isExtensible(empty); // true
// å®ä»¬å¯ä»¥å为ä¸å¯æå±ç
Object.preventExtensions(empty);
Object.isExtensible(empty); // false
// æ ¹æ®å®ä¹ï¼å¯å°å¯¹è±¡æ¯ä¸å¯æå±çã
const sealed = Object.seal({});
Object.isExtensible(sealed); // false
// æ ¹æ®å®ä¹ï¼å»ç»å¯¹è±¡åæ ·ä¹æ¯ä¸å¯æå±çã
const frozen = Object.freeze({});
Object.isExtensible(frozen); // false
éå¯¹è±¡åæ°
å¨ ES5 ä¸ï¼å¦æåæ°ä¸æ¯ä¸ä¸ªå¯¹è±¡ï¼å³åºæ¬ç±»åï¼ï¼å°æåº TypeErrorãå¨ ES2015 ä¸ï¼å¦æä¼ å
¥ç忰䏿¯ä¸ä¸ªå¯¹è±¡ï¼é£ä¹å®å°è¿å false èä¸ä¼æ¥éï¼å 为æç
§å®ä¹ï¼åå§ç±»åæ¯ä¸å¯åçã
Object.isExtensible(1);
// TypeError: 1 is not an object (ES5 code)
Object.isExtensible(1);
// false (ES2015 code)
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.isextensible> |