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 éå§ï¼å¯ä»¥ä½¿ç¨è¨ç®å±¬æ§åï¼computed property nameï¼è¡¨éå¼ï¼ç¶å®å°çµ¦å®å½å¼ã
JavaScript ç setter è½å¨åè©¦ä¿®æ¹æå®å±¬æ§æï¼å·è¡çµ¦å®å½å¼ãSetter æå¸¸ç¨æ¼å getter ä¸å建ç«èæ¬å±¬æ§ï¼pseudo-propertyï¼ãä½ ä¸å¯è½çµ¦åä¸å屬æ§è³¦äº setter è實éå¼ã
ä½¿ç¨ set
èªæ³æï¼è«æ³¨æä»¥ä¸æ
æ³ï¼
set
ç object literalãæç¸å屬æ§å
¥å£ï¼data entryï¼ç data å½¢å¼åºç¾ï¼ä¸è½ä½¿ç¨ { set x(v) { }, set x(v) { } }
and { x: ..., set x(v) { } }
ï¼delete
æä½ç¬¦å¯ç§»é¤ setterã
é裡æçµ¦ç©ä»¶ language
å®ç¾©ç¨±çº current
çèæ¬å±¬æ§ãå¨ææ´¾æ¸å¼æ log
æå該å¼ä¸åæ´æ°ï¼
var 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
is not defined and any attempts to access it will result in undefined
.
delete
æä½ç¬¦ç§»é¤ setter
è¥æ³ç§»é¤ setter ç話ï¼å¯ä»¥ç´æ¥ä½¿ç¨ delete
ï¼
defineProperty
To append a setter to an existing object later at any time, use Object.defineProperty()
.
var 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
使ç¨è¨ç®å±¬æ§å
var expr = "foo";
var obj = {
baz: "bar",
set [expr](v) {
this.baz = v;
},
};
console.log(obj.baz); // "bar"
obj.foo = "baz"; // è· 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