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
確èªããããªãã¸ã§ã¯ãã§ãã
è«çå¤ã§ãä¸ãããããªãã¸ã§ã¯ããåçµããã¦ãããã©ããã示ãã¾ãã
解説ãªãã¸ã§ã¯ããåçµç¶æ (frozen) ã¨ã¯ããªãã¸ã§ã¯ããæ¡å¼µå¯è½ã§ã¯ãªãããã¹ã¦ã®ããããã£ã¯æ§æä¸å¯ã§ãããããã¦ãã¹ã¦ã®ãã¼ã¿ããããã£ï¼ããã¯ã²ãã¿ã¼ãã»ãã¿ã¼ã³ã³ãã¼ãã³ããæã¤ã¢ã¯ã»ãµã¼ããããã£ä»¥å¤ã®ãã®ãæãã¾ãï¼ãæ¸ãè¾¼ã¿ä¸å¯ã§ããå ´åã§ãã
ä¾ 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 code)
Object.isFrozen(1);
// true (ES2015 code)
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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