Object.prototype.__defineSetter__()
ì§ìì´ ì¤ë¨ëììµëë¤: ì´ ê¸°ë¥ì ë ì´ì ê¶ì¥ëì§ ììµëë¤. ì¼ë¶ ë¸ë¼ì°ì ììë ìì§ ì§ìí ì ìì§ë§ ê´ë ¨ ì¹ íì¤ìì ì´ë¯¸ ì ê±°ëìê±°ë ì ê±° ê³¼ì ì ìë ê²½ì°ê° ìì¼ë©°, í¸íì±ì ìí´ ì ì§ëê³ ìì ì ììµëë¤. ì¬ì©ì í¼íê³ ê°ë¥íë¤ë©´ 기존 ì½ë를 ì ë°ì´í¸íì¸ì. ê²°ì ì ì§ìí íë¨ì í¸íì± í를 íì¸íì¸ì. ì´ ê¸°ë¥ì ì¸ì ë ì§ ìëì ì¤ë¨í ì ììì ì ìíì¸ì.
ì°¸ê³ :
ì´ ê¸°ë¥ì ê°ì²´ ì´ê¸°ì 구문 ëë Object.defineProperty() API를 ì¬ì©íì¬ ì¤ì ì ì ìíë ê²ì ê¶ì¥í기 ë문ì ì´ ê¸°ë¥ì ë ì´ì ì¬ì©ëì§ ììµëë¤. ì´ ë©ìëì ëìì ì¹ í¸íì±ì ìí´ìë§ ëª
ìëë©° 모ë íë«í¼ìì 구íí íìë ììµëë¤.모ë íê²½ìì ìëíì§ ìì ìë ììµëë¤.
Object ì¸ì¤í´ì¤ì __defineSetter__() ë©ìëë í´ë¹ ìì±ì ì¤ì íë ¤ê³ ìëí ë í¸ì¶ë í¨ìì ê°ì²´ì ìì±ì ë°ì¸ë©í©ëë¤.
구문
__defineSetter__(prop, func)
매ê°ë³ì
ë°í ê°
ìì (undefined).
ìì¸
TypeError-
funcê° í¨ìê° ìë ê²½ì° ë°ìí©ëë¤.
ì¤ëª
Object.prototypeìì ììíë 모ë ê°ì²´(ì¦, null-íë¡í íì
ê°ì²´ë¥¼ ì ì¸í 모ë ê°ì²´)ë __defineSetter__() ë©ìë를 ììí©ëë¤. ì´ ë©ìë를 ì¬ì©íë©´ 기존 ê°ì²´ì ì¤ì ì를 ì ìí ì ììµëë¤. ì´ë [Object.defineProperty(obj, prop, { set: func, configurable: true, enumerable: true })]ì ëì¼íë©°, ì´ë ìì±ì´ ì´ê±° ê°ë¥íê³ êµ¬ì± ê°ë¥íë©° 기존 ì ê·¼ìê° ìë ê²½ì° ë³´ì¡´ë¨ì ì미í©ëë¤.
__defineSetter__()ë ëª
ì¸ììì "ê¶ì¥ ì í ì¬í"ì¼ë¡ ì ìëì´ ìì¼ë¯ë¡ ë°ëì 구íí íìê° ììµëë¤. ê·¸ë¬ë 모ë 주ì ë¸ë¼ì°ì ìì 구ííê³ ìì¼ë©° ê³ì ì¬ì©ëê³ ì기 ë문ì ì ê±°ë ê°ë¥ì±ì ë®ìµëë¤. ë¸ë¼ì°ì ê° __defineSetter__()를 구ííë¤ë©´, __lookupGetter__(), __lookupSetter__(), __defineGetter__() 구íì´ íìí©ëë¤.
ìì
>__defineSetter__() ì¬ì©í기
const o = {};
o.__defineSetter__("value", function (val) {
this.anotherValue = val;
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
íì¤ ë°©ìì¼ë¡ ì¤ì ì ìì± ì ìí기
ê°ì²´ê° ì²ì ì´ê¸°íë ë set 구문ì ì¬ì©íì¬ ì¤ì ì를 ì ìí ì ììµëë¤.
const o = {
set value(val) {
this.anotherValue = val;
},
};
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
ê°ì²´ê° ìì±ë í Object.defineProperty()를 ì¬ì©íì¬ ê°ì²´ì ì¤ì ì를 ì ìí ìë ììµëë¤. ì´ ë©ìëë __defineSetter__()ì ë¹êµíì¬ ì¤ì ìì ì´ê±° ê°ë¥ì±ê³¼ êµ¬ì± ê°ë¥ì±ì ì ì´í ì ìì ë¿ë§ ìëë¼ ì¬ë³¼ ìì±ì ì ìí ì ììµëë¤. Object.defineProperty() ë©ìëë Object.prototypeìì ììëì§ ìì¼ë¯ë¡ __defineSetter__() ë©ìëê° ìë null-íë¡í íì
ê°ì²´ììë ìëí©ëë¤.
const o = {};
Object.defineProperty(o, "value", {
set(val) {
this.anotherValue = val;
},
configurable: true,
enumerable: true,
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.prototype.__defineSetter__> |