Baseline Widely available
Object.seal()
éææ¹æ³å¯å°ä¸ä¸ªå¯¹è±¡ãå¯å°ä¸ä¸ªå¯¹è±¡ä¼é»æ¢å
¶æ©å±å¹¶ä¸ä½¿å¾ç°æå±æ§ä¸å¯é
ç½®ãå¯å°å¯¹è±¡æä¸ç»åºå®ç屿§ï¼ä¸è½æ·»å æ°å±æ§ãä¸è½å é¤ç°æå±æ§ææ´æ¹å
¶å¯æä¸¾æ§åå¯é
ç½®æ§ãä¸è½éæ°åé
å
¶ååãåªè¦ç°æå±æ§ç弿¯å¯åçï¼å®ä»¬ä»ç¶å¯ä»¥æ´æ¹ãseal()
è¿åä¼ å
¥çåä¸å¯¹è±¡ã
const object1 = {
property1: 42,
};
Object.seal(object1);
object1.property1 = 33;
console.log(object1.property1);
// Expected output: 33
delete object1.property1; // Cannot delete when sealed
console.log(object1.property1);
// Expected output: 33
è¯æ³ åæ°
obj
è¦å¯å°ç对象ã
被å¯å°ç对象ã
æè¿°å¯å°ä¸ä¸ªå¯¹è±¡çä»·äºé»æ¢å
¶æ©å±ï¼ç¶åå°ç°æç屿§æè¿°ç¬¦æ´æ¹ä¸º configurable: false
ãè¿ä¼ä½¿å¯¹è±¡ä¸ç屿§éåºå®ãä»¤å¯¹è±¡çææå±æ§ä¸å¯é
ç½®ä¸å¯ä»¥é²æ¢å®ä»¬ä»æ°æ®å±æ§è½¬æ¢æè®¿é®å¨å±æ§ï¼åä¹äº¦ç¶ï¼ä½å®ä¸ä¼é²æ¢æ°æ®å±æ§çå¼è¢«æ´æ¹ãå°è¯å 餿è
åå¯å°å¯¹è±¡æ·»å 屿§ï¼æè
å°æ°æ®å±æ§å访é®å¨å±æ§äºç¸è½¬æ¢ï¼é½å°å¤±è´¥ï¼å¯è½ä¼éé»å¤±è´¥ï¼ä¹å¯è½ä¼æåº TypeError
ï¼æå¸¸è§çæ¯å¨ä¸¥æ ¼æ¨¡å¼ä»£ç ä¸ï¼ä½ä¸ä»
éäºæ¤ï¼ã
ååé¾ä¿æä¸åãç¶èï¼ç±äºæ©å±è¢«é»æ¢ï¼[[Prototype]]
ä¸è½éæ°èµå¼ã
ä¸åäº Object.freeze()
çæ¯ï¼éè¿ Object.seal()
å¯å°ç对象å¯ä»¥æ´æ¹å
¶ç°æå±æ§ï¼åªè¦å®ä»¬æ¯å¯åçã
const obj = {
prop() {},
foo: "bar",
};
// å¯ä»¥æ·»å æ°å±æ§ï¼å¯ä»¥æ´æ¹æå é¤ç°æå±æ§ã
obj.foo = "baz";
obj.lumpy = "woof";
delete obj.prop;
const o = Object.seal(obj);
o === obj; // true
Object.isSealed(obj); // true
// æ´æ¹å¯å°å¯¹è±¡ç屿§å¼ä»ç¶ææã
obj.foo = "quux";
// ä½ä¸è½å°æ°æ®å±æ§è½¬æ¢æè®¿é®è
屿§ï¼åä¹äº¦ç¶ã
Object.defineProperty(obj, "foo", {
get() {
return "g";
},
}); // æåº TypeError
// ç°å¨ï¼é¤äºå±æ§å¼ä¹å¤ç任使´æ¹é½å°å¤±è´¥ã
obj.quaxxor = "the friendly duck";
// éé»ä¸æ·»å 屿§
delete obj.foo;
// éé»ä¸æ·»å é¤å±æ§
// ...ä¸ä¸¥æ ¼æ¨¡å¼ä¸ï¼è¿ç§å°è¯å°ä¼æåº TypeErrorã
function fail() {
"use strict";
delete obj.foo; // æåºä¸ä¸ª TypeError
obj.sparky = "arf"; // æåºä¸ä¸ª TypeError
}
fail();
// å°è¯éè¿ Object.defineProperty æ·»å 屿§ä¹ä¼æåºé误ã
Object.defineProperty(obj, "ohai", {
value: 17,
}); // æåº TypeError
Object.defineProperty(obj, "foo", {
value: "eit",
}); // æ´æ¹ç°æå±æ§å¼
éå¯¹è±¡åæ°
å¨ ES5 ä¸ï¼å¦æè¯¥æ¹æ³ç忰䏿¯ä¸ä¸ªå¯¹è±¡ï¼å³åºæ¬ç±»åï¼ï¼å®å°ä¼æåº TypeError
ãå¨ ES2015 ä¸ï¼éå¯¹è±¡åæ°å°æåæ ·è¿åï¼ä¸ä¼æä»»ä½é误ï¼å ä¸ºæ ¹æ®å®ä¹ï¼åºæ¬ç±»åå·²ç»æ¯ä¸å¯åçã
Object.seal(1);
// TypeError: 1 is not an object (ES5 code)
Object.seal(1);
// 1 (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