Baseline Widely available
å½å°è¯è®¾ç½®å±æ§æ¶ï¼set
è¯æ³å°å¯¹è±¡å±æ§ç»å®å°è¦è°ç¨ç彿°ãå®è¿å¯ä»¥å¨ç±»ä¸åºç¨ã
const language = {
set current(name) {
this.log.push(name);
},
log: [],
};
language.current = "EN";
language.current = "FA";
console.log(language.log);
// Expected output: Array ["EN", "FA"]
è¯æ³
{ set prop(val) { /* ⦠*/ } }
{ set [expression](val) { /* ⦠*/ } }
åæ°
prop
è¦ç»å®å°ç»å®å½æ°ç屿§åã
val
ç¨äºä¿åå°è¯åé
ç»prop
çå¼çåéçä¸ä¸ªå«åã
ä» ECMAScript 2015 å¼å§ï¼è¿å¯ä»¥ä½¿ç¨ä¸ä¸ªè®¡ç®å±æ§åç表达å¼ç»å®å°ç»å®ç彿°ã
å¨ javascript ä¸ï¼å¦æè¯çæ¹åä¸ä¸ªå±æ§çå¼ï¼é£ä¹å¯¹åºç setter å°è¢«æ§è¡ãsetter ç»å¸¸å getter è¿ç¨ä»¥å建ä¸ä¸ªä¼ªå±æ§ãä¸å¯è½å¨å ·æçå®å¼ç屿§ä¸åæ¶æ¥æä¸ä¸ª setter å¨ã
ä½¿ç¨ set è¯æ³æ¶è¯·æ³¨æï¼
{ set x(v) { }, set x(v) { } }
å { x: ..., set x(v) { } }
æ¯ä¸å
许ç )è¿å°å®ä¹ä¸ä¸ªå¯¹è±¡ language
çä¼ªå±æ§current
ï¼å½current
被åé
ä¸ä¸ªå¼æ¶ï¼å°ä½¿ç¨è¯¥å¼æ´æ°log
ï¼
const language = {
set current(name) {
this.log.push(name);
},
log: [],
};
language.current = "EN";
console.log(language.log); // ['EN']
language.current = "FA";
console.log(language.log); // ['EN', 'FA']
请注æï¼current
屿§æ¯æªå®ä¹çï¼è®¿é®å®æ¶å°ä¼è¿å undefined
ã
delete
æä½ç¬¦ç§»é¤ä¸ä¸ª setter
æä»¬å¯ä»¥ä½¿ç¨delete
æä½ç¬¦ç§»é¤ setterã
defineProperty
为å½å对象å®ä¹ setter
æä»¬å¯ä»¥éæ¶ä½¿ç¨ Object.defineProperty()
ç»ä¸ä¸ªå·²ç»åå¨ç对象添å ä¸ä¸ª setterã
const o = { a: 0 };
Object.defineProperty(o, "b", {
set: function (x) {
this.a = x / 2;
},
});
o.b = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' property
console.log(o.a); // 5
使ç¨è®¡ç®å±æ§å
const expr = "foo";
const obj = {
baz: "bar",
set [expr](v) {
this.baz = v;
},
};
console.log(obj.baz); // "bar"
obj.foo = "baz"; // run the setter
console.log(obj.baz); // "baz"
è§è æµè§å¨å
¼å®¹æ§ åè§
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