Baseline Widely available
Object.isFrozen()
éææ¹æ³å¤æä¸ä¸ªå¯¹è±¡æ¯å¦è¢«å»ç»ã
const object1 = {
property1: 42,
};
console.log(Object.isFrozen(object1));
// Expected output: false
Object.freeze(object1);
console.log(Object.isFrozen(object1));
// Expected output: true
è¯æ³ åæ°
obj
è¦æ£æµç对象ã
æç¤ºç»å®å¯¹è±¡æ¯å¦è¢«å»ç»çå¸å°å¼ã
æè¿°ä¸ä¸ªå¯¹è±¡ï¼å½ä¸ä» å½å®ä¸å¯æå±ï¼ä¸ææå±æ§é½æ¯ä¸å¯é ç½®çï¼ææçæ°æ®å±æ§ï¼å³ä¸æ¯æ getter æ setter ç访é®å¨å±æ§ç屿§ï¼é½æ¯ä¸å¯åçæ¶ï¼å®å°±æ¯è¢«å»ç»çã
ç¤ºä¾ ä½¿ç¨ Object.isFrozen()// ä¸ä¸ªæ°å¯¹è±¡æ¯é»è®¤æ¯å¯æ©å±çï¼æä»¥å®ä¹æ¯éå»ç»çã
Object.isFrozen({}); // false
// ä¸ä¸ªä¸å¯æ©å±çç©ºå¯¹è±¡åæ¶ä¹æ¯ä¸ä¸ªå»ç»å¯¹è±¡ã
const vacuouslyFrozen = Object.preventExtensions({});
Object.isFrozen(vacuouslyFrozen); // true
// ä¸ä¸ªé空对象é»è®¤ä¹æ¯éå»ç»çã
const oneProp = { p: 42 };
Object.isFrozen(oneProp); // false
// å³ä½¿ä»¤å¯¹è±¡ä¸å¯æ©å±ï¼å®ä¹ä¸ä¼è¢«å»ç»ï¼å ä¸ºå±æ§ä»ç¶æ¯å¯é
ç½®çï¼èä¸å¯åçï¼ã
Object.preventExtensions(oneProp);
Object.isFrozen(oneProp); // false
// æ¤æ¶ï¼å¦æå é¤äºè¿ä¸ªå±æ§ï¼åå®ä¼æä¸ºä¸ä¸ªå»ç»å¯¹è±¡ã
delete oneProp.p;
Object.isFrozen(oneProp); // true
// ä¸ä¸ªä¸å¯æ©å±çå¯¹è±¡ï¼æ¥æä¸ä¸ªä¸å¯åä½å¯é
ç½®ç屿§ï¼åå®ä»ç¶æ¯éå»ç»çã
const nonWritable = { e: "plep" };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, "e", {
writable: false,
}); // 令å
¶ä¸å¯å
Object.isFrozen(nonWritable); // false
// æè¿ä¸ªå±æ§æ¹ä¸ºä¸å¯é
ç½®ï¼ä¼è®©è¿ä¸ªå¯¹è±¡æä¸ºå»ç»å¯¹è±¡ã
Object.defineProperty(nonWritable, "e", {
configurable: false,
}); // 令å
¶ä¸å¯é
ç½®
Object.isFrozen(nonWritable); // true
// ä¸ä¸ªä¸å¯æ©å±çå¯¹è±¡ï¼æ¥æä¸ä¸ªä¸å¯é
ç½®ä½å¯åç屿§ï¼åå®ä¹æ¯éå»ç»çã
const nonConfigurable = { release: "the kraken!" };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, "release", {
configurable: false,
});
Object.isFrozen(nonConfigurable); // false
// æè¿ä¸ªå±æ§æ¹ä¸ºä¸å¯åï¼ä¼è®©è¿ä¸ªå¯¹è±¡æä¸ºå»ç»å¯¹è±¡ã
Object.defineProperty(nonConfigurable, "release", {
writable: false,
});
Object.isFrozen(nonConfigurable); // true
// ä¸ä¸ªä¸å¯æ©å±çå¯¹è±¡ï¼æ¥æä¸ä¸ªè®¿é®å¨å±æ§ï¼åå®ä»ç¶æ¯éå»ç»çã
const accessor = {
get food() {
return "yum";
},
};
Object.preventExtensions(accessor);
Object.isFrozen(accessor); // false
// æè¿ä¸ªå±æ§æ¹ä¸ºä¸å¯é
ç½®ï¼ä¼è®©è¿ä¸ªå¯¹è±¡æä¸ºå»ç»å¯¹è±¡ã
Object.defineProperty(accessor, "food", {
configurable: false,
});
Object.isFrozen(accessor); // true
// ä½¿ç¨ Object.freeze æ¯å»ç»ä¸ä¸ªå¯¹è±¡ææ¹ä¾¿çæ¹æ³ã
const frozen = { 1: 81 };
Object.isFrozen(frozen); // false
Object.freeze(frozen);
Object.isFrozen(frozen); // true
// æ ¹æ®å®ä¹ï¼ä¸ä¸ªå»ç»å¯¹è±¡æ¯ä¸å¯æå±çã
Object.isExtensible(frozen); // false
// åæ ·ï¼æ ¹æ®å®ä¹ï¼ä¸ä¸ªå»ç»å¯¹è±¡ä¹æ¯å¯å°å¯¹è±¡ã
Object.isSealed(frozen); // true
éå¯¹è±¡åæ°
å¨ ES5 ä¸ï¼å¦æä¼ éç»æ¤æ¹æ³ç忰䏿¯ä¸ä¸ªå¯¹è±¡ï¼èæ¯ä¸ä¸ªåºæ¬ç±»åå¼ï¼ï¼åä¼å¯¼è´ TypeError
ãå¨ ES2015 ä¸ï¼å¦æä¼ éäºä¸ä¸ªé对象类åçåæ°ï¼å®å°è¿å true
èä¸ä¼åºç°é误ï¼å ä¸ºåºæ¬ç±»åå¼å¨å®ä¹ä¸æ¯ä¸å¯åçã
Object.isFrozen(1);
// TypeError: 1 is not an objectï¼ES5 代ç ï¼
Object.isFrozen(1);
// true ï¼ES2015 代ç ï¼
è§è æµè§å¨å
¼å®¹æ§ åè§
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