Object.prototype.__lookupSetter__()
ì§ìì´ ì¤ë¨ëììµëë¤: ì´ ê¸°ë¥ì ë ì´ì ê¶ì¥ëì§ ììµëë¤. ì¼ë¶ ë¸ë¼ì°ì ììë ìì§ ì§ìí ì ìì§ë§ ê´ë ¨ ì¹ íì¤ìì ì´ë¯¸ ì ê±°ëìê±°ë ì ê±° ê³¼ì ì ìë ê²½ì°ê° ìì¼ë©°, í¸íì±ì ìí´ ì ì§ëê³ ìì ì ììµëë¤. ì¬ì©ì í¼íê³ ê°ë¥íë¤ë©´ 기존 ì½ë를 ì ë°ì´í¸íì¸ì. ê²°ì ì ì§ìí íë¨ì í¸íì± í를 íì¸íì¸ì. ì´ ê¸°ë¥ì ì¸ì ë ì§ ìëì ì¤ë¨í ì ììì ì ìíì¸ì.
ì°¸ê³ :
ì´ ê¸°ë¥ì Object.getOwnPropertyDescriptor() API ì¬ì©ì ì í¸í기 ë문ì ë ì´ì ì¬ì©ëì§ ììµëë¤. ì´ ë©ìëì ëìì ì¹ í¸íì±ì ìí´ìë§ ëª
ìëë©° 모ë íë«í¼ìì 구íí íìë ììµëë¤. 모ë ê³³ìì ìëíì§ ìì ìë ììµëë¤.
Object ì¸ì¤í´ì¤ì __lookupSetter__() ë©ìëë ì§ì ë ìì±ì ì¤ì ìë¡ ë°ì¸ë©ë í¨ì를 ë°íí©ëë¤.
구문
__lookupSetter__(prop)
매ê°ë³ì
prop-
ë°íëì´ì¼ í ì¤ì ì ìì±ì ì´ë¦ì´ í¬í¨ë 문ìì´.
ë°í ê°
ì§ì ë ìì±ì ì¤ì ìë¡ ë°ì¸ë©ë í¨ì를 ë°íí©ëë¤. í´ë¹ ìì±ì ì°¾ì ì ìê±°ë í´ë¹ ìì±ì´ ë°ì´í° ìì±ì´ë©´ undefined를 ë°íí©ëë¤.
ì¤ëª
Object.prototypeì ììë°ë 모ë ê°ì²´ë¤(ì¦, null-íë¡í íì
ê°ì²´ë¥¼ ì ì¸í 모ë ê°ì²´)ì __lookupSetter__() ë©ìë를 ììë°ìµëë¤. ê°ì²´ì ìì±ì ëí´ ì¤ì ìê° ì ìëì´ ìë¤ë©´, í´ë¹ ìì±ì íµí´ ì¤ì ì í¨ì를 ì§ì 참조íë ê²ì ë¶ê°ë¥í©ëë¤. ìëíë©´ ê·¸ ìì±ì ê°ì´ ì¤ì ë ëë§ í¨ì를 í¸ì¶í기 ë문ì
ëë¤. __lookupSetter__()ë ì¤ì ì í¨ìì ëí 참조를 ì»ë ë° ì¬ì©ë ì ììµëë¤.
__lookupSetter__() ë©ìëë íë¡í íì
ì²´ì¸ì ë°ë¼ ì¬ë¼ê°ë©° ì§ì ë ìì±ì ì°¾ìµëë¤. íë¡í íì
ì²´ì¸ ìì ì´ë¤ ê°ì²´ê° ì§ì ë ê³ ì ìì±ì ê°ì§ê³ ìë¤ë©´, í´ë¹ ìì±ì ìì± ì¤ëª
ì ì set ìì±ì´ ë°íë©ëë¤. ë§ì½ ê·¸ ìì±ì´ ë°ì´í° ìì±ì´ë¼ë©´, undefinedê° ë°íë©ëë¤. ì ì²´ íë¡í íì
ì²´ì¸ì ë°ë¼ ìì±ì ì°¾ì§ ëª»í ê²½ì°ìë undefinedê° ë°íë©ëë¤.
__lookupSetter__() ë©ìëë ëª
ì¸ììì "ê·ë²ì ì íì¬í(normative optional)"ì¼ë¡ ì ìëì´ ììµëë¤. ì´ë 모ë 구íì²´ê° ì´ ë©ìë를 ë°ëì 구íí íìë ìë¤ë ì미ì
ëë¤. ê·¸ë¬ë 모ë 주ì ë¸ë¼ì°ì ë¤ì´ ì´ë¥¼ 구ííê³ ìì¼ë©°, ì§ìì ì¸ ì¬ì©ì¼ë¡ ì¸í´ ìì¼ë¡ ì ê±°ë ê°ë¥ì±ì ë®ìµëë¤. ë§ì½ ë¸ë¼ì°ì ê° __lookupSetter__()를 구ííë¤ë©´, __lookupGetter__(), __defineGetter__(), ê·¸ë¦¬ê³ __defineSetter__() ë©ìëë í¨ê» 구íí´ì¼ í©ëë¤.
ìì
>__lookupSetter__() ì¬ì©í기
const obj = {
set foo(value) {
this.bar = value;
},
};
obj.__lookupSetter__("foo");
// [Function: set foo]
íì¤ ë°©ë²ì¼ë¡ ìì±ì ì¤ì ì ê²ìí기
ìì±ì ì¤ì ì를 ì°¾ì ëë Object.getOwnPropertyDescriptor() API를 ì¬ì©í´ì¼ í©ëë¤. __lookupSetter__()ì ë¹êµíìë©´, ì´ ë©ìëë ì¬ë³¼ ìì±ë ì°¾ì ì ììµëë¤. Object.getOwnPropertyDescriptor() ë©ìëë ëí null-íë¡í íì
ê°ì²´ììë ìëí©ëë¤. ì´ë¬í ê°ì²´ë¤ì Object.prototypeì ììë°ì§ ìì __lookupSetter__() ë©ìë를 ê°ì§ê³ ìì§ ììµëë¤. ë§ì½ __lookupSetter__()ì íë¡í íì
ì²´ì¸ì ë°ë¼ ì¬ë¼ê°ë ëìì´ ì¤ìíë¤ë©´, Object.getPrototypeOf()를 ì¬ì©íì¬ ì§ì 구íí ì ììµëë¤.
const obj = {
set foo(value) {
this.bar = value;
},
};
Object.getOwnPropertyDescriptor(obj, "foo").set;
// [Function: set foo]
const obj2 = {
__proto__: {
set foo(value) {
this.bar = value;
},
},
};
function findSetter(obj, prop) {
while (obj) {
const desc = Object.getOwnPropertyDescriptor(obj, prop);
if (desc) {
return desc.set;
}
obj = Object.getPrototypeOf(obj);
}
}
console.log(findSetter(obj2, "foo")); // [Function: set foo]
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.prototype.__lookupSetter__> |