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