Baseline Widely available
get
구문ì ê°ì²´ì ìì± ì ê·¼ ì í¸ì¶í í¨ì를 ë°ì¸ë©í©ëë¤. ì´ êµ¬ë¬¸ì classesììë ì¬ì©í ì ììµëë¤.
const obj = {
log: ["a", "b", "c"],
get latest() {
return this.log[this.log.length - 1];
},
};
console.log(obj.latest);
// Expected output: "c"
구문
{ get prop() { /* ⦠*/ } }
{ get [expression]() { /* ⦠*/ } }
ëª ê°ì§ ì¶ê°ì ì¸ êµ¬ë¬¸ì ì íì´ ììµëë¤.
prop
ì§ì ë í¨ìì ë°ì¸ë©í ìì±ì ì´ë¦ì ëë¤. ê°ì²´ ì´ê¸°ìì ë¤ë¥¸ ìì±ê³¼ ëì¼í ë°©ìì¼ë¡ 문ìì´ ë¦¬í°ë´, ì«ì 리í°ë´ ëë ìë³ìì¼ ì ììµëë¤.
expression
ìì± ì´ë¦ì ëí ííìì ì¬ì©íì¬ ì§ì ë í¨ìì ë°ì¸ë©í ìë ììµëë¤.
ëì ì¼ë¡ ê³ì°ë ê°ì ë°ííë ìì±ì ëí ì ê·¼ì íì©íë ê²ì´ ë°ëì§í ê²½ì°ë ììµëë¤. ëª ìì ì¸ ë©ìë í¸ì¶ì ì¬ì©íì§ ìê³ ë ë´ë¶ ë³ìì ìí를 ë°ìíê³ ì¶ì ì ììµëë¤. JavaScriptììë ì ê·¼ì(getter)를 ì¬ì©íì¬ ì´ ìì ì ìíí ì ììµëë¤.
ì ê·¼ìì ì¤ì ì를 í¨ê» ì¬ì©íì¬ ì¼ì¢ ì ìì¬ ìì±ì ìì±íë ê²ì ê°ë¥íì§ë§ ìì±ì ë°ì¸ë©ë ì ê·¼ìì í´ë¹ ìì±ì´ ì¤ì ë¡ ê°ì ë³´ì íëë¡ íë ê²ì ëìì ë¶ê°ë¥í©ëë¤.
ìì ê°ì²´ ì´ê¸°ììì ìë¡ì´ ê°ì²´ì ì ê·¼ì ì ìí기ë¤ì ìì ë ê°ì²´ obj
ì ìì¬ ìì± latest
를 ìì±í©ëë¤. latest
ë ë°°ì´ log
ì ë§ì§ë§ ìì를 ë°íí©ëë¤.
const obj = {
log: ["example", "test"],
get latest() {
if (this.log.length === 0) return undefined;
return this.log[this.log.length - 1];
},
};
console.log(obj.latest); // "test"
latest
ì ë¤ë¥¸ ê°ì í ë¹íë ¤ í´ë ì무 ë³íë ìì ê²ì
ëë¤.
ëê°ì 구문ì ì¬ì©í´ í´ëì¤ ì¸ì¤í´ì¤ìì ì¬ì©í ì ìë ê³µì© ì¸ì¤í´ì¤ ì ê·¼ì를 ì ìí ì ììµëë¤. í´ëì¤ììë ë©ìë ì¬ì´ì ì¼íë¡ êµ¬ë¶í íìê° ììµëë¤.
class ClassWithGetSet {
#msg = "hello world";
get msg() {
return this.#msg;
}
set msg(x) {
this.#msg = `hello ${x}`;
}
}
const instance = new ClassWithGetSet();
console.log(instance.msg); // "hello world"
instance.msg = "cake";
console.log(instance.msg); // "hello cake"
ì ê·¼ì ìì±ì í´ëì¤ì prototype
ì¼ë¡ ì ìëë¯ë¡ í´ëì¤ì 모ë ì¸ì¤í´ì¤ìì ê³µì ë©ëë¤. ê°ì²´ 리í°ë´ì ì ê·¼ì ìì±ê³¼ ë¬ë¦¬ í´ëì¤ì ì ê·¼ì ìì±ì ì´ê±°í ì ììµëë¤.
Static ì¤ì ìì private ì¤ì ìë ì ì¬í 구문ì ì¬ì©íë©°, static
ê³¼ private class features íì´ì§ì ì¤ëª
ëì´ ììµëë¤.
delete
ì°ì°ìë¡ ì ê·¼ì ì ê±°í기
ì ê·¼ì를 ìì íë ¤ë©´ ê°ë¨í delete
ì°ì°ì를 ì¬ì©íì¸ì.
defineProperty
를 ì´ì©í´ ì´ë¯¸ ì¡´ì¬íë ê°ì²´ì ì ê·¼ì ì ìí기
ì´ë¯¸ ì¡´ì¬íë ê°ì²´ì ì ê·¼ì를 ì¶ê°íë ¤ë©´ Object.defineProperty()
를 ì¬ì©íì¸ì.
const o = { a: 0 };
Object.defineProperty(o, "b", {
get() {
return this.a + 1;
},
});
console.log(o.b); // ì ê·¼ì ì¤í, a + 1 ë°í (ì¦, 1)
ê³ì°ë ìì± ì´ë¦ ì¬ì©í기
const expr = "foo";
const obj = {
get [expr]() {
return "bar";
},
};
console.log(obj.foo); // "bar"
ì ì ì ê·¼ì ì ìí기
class MyConstants {
static get foo() {
return "foo";
}
}
console.log(MyConstants.foo); // 'foo'
MyConstants.foo = "bar";
console.log(MyConstants.foo); // 'foo', ì ì ì ê·¼ìì ê° ë³ê²½ ë¶ê°
ëëí / ì기 ë®ì´ì°ê¸° / ëê¸í ì ê·¼ì
ì ê·¼ì를 ì¬ì©íë©´ ê°ì²´ì ìì±ì ì ìíë, ì ê·¼í기 ì ìë ìì±ì ê°ì ê³ì°íì§ ìì ì ììµëë¤. ì ê·¼ìë ê°ì´ ì¤ì ë¡ íìí ìí©ì´ ì¤ê¸° ì ê¹ì§ ê³ì° ë¹ì©ì 미루ë ê²ì ëë¤. ì¬ì©íì§ ìì¼ë©´ ë¹ì©ì ì§ë¶í ì¼ë ììµëë¤.
ìì± ê°ì ê³ì°ì ëê¸íê² ë§ë¤ê±°ë ë¯¸ë£¨ê³ , ëì¤ì ì ê·¼í ì ìëë¡ ìºìì ì ì¥íë ì¶ê° ìµì í 기ë²ì ëëí(smart) ëë ë©ëª¨í(ë©ëª¨ì´ì ì´ì ) ì ê·¼ìë¼ê³ í©ëë¤. ëëí ì ê·¼ì ìì±ì ê°ì ì ê·¼ì를 ì²ì í¸ì¶í ë ê³ì°íë ëìì ìºìì ì ì¥ë©ëë¤. ëë¶ì ìì±ì ì¶ê° ì ê·¼ ì ìºììì ê°ì ì¦ì ë°ííë¯ë¡ ê°ì ë¤ì ê³ì°íë ìê³ ë¥¼ í¼í ì ììµëë¤. ëëí ì ê·¼ìë ë¤ìê³¼ ê°ì ìí©ì ì ì©í©ëë¤.
ì°¸ê³ : ì¦, ê°ì´ ë³ê²½ë ê²ì¼ë¡ ììëë ìì±ì ëí´ ê²ì¼ë¥¸ ì ê·¼ì를 ìì±íë©´ ê°ì ë¤ì ê³ì°íì§ ìì¼ë¯ë¡ ê²ì¼ë¥¸ ì ê·¼ì를 ìì±í´ìë ì ë©ëë¤.
모ë ì ê·¼ìê° ì²ìë¶í° 'ëê¸'íë©° 'ë©ëª¨í'ëë ê²ì ìëëë¤. ì´ë° ëìì´ íìíë©´ ì§ì 구íí´ì¼ í©ëë¤.
ë¤ì ìì ì ì ê·¼ì ìì±ì ì´ë ê°ì²´ì ìì²´ ìì±ì¼ë¡ ì¡´ì¬í©ëë¤. ì´ ìì±ì ì ê·¼íë ìê°, ì ê·¼ìë ì¤ì¤ë¡ ìì ì ê°ì²´ìì ì ê±°íë ëìì ê°ì ì´ë¦ì ìì±ì ë¤ì ì¶ê°íì§ë§, ì´ëë ì ê·¼ìê° ìëë¼ ë°ì´í° ìì±ì¼ë¡ ì¶ê°í©ëë¤. ë§ì§ë§ì¼ë¡ ê·¸ ìì±ì ê°ì ë°íí©ëë¤.
const obj = {
get notifier() {
delete this.notifier;
this.notifier = document.getElementById("bookmarked-notification-anchor");
return this.notifier;
},
};
get vs. defineProperty
get
í¤ìëì Object.defineProperty()
ë ë¹ì·í 결과를 ë´ì§ë§, classes
ì ì¬ì©í ê²½ì° ë¯¸ë¬í ì°¨ì´ê° ìê¹ëë¤.
get
ì ì¬ì©í ê²½ì°, í´ë¹ ìì±ì ì¸ì¤í´ì¤ì íë¡í íì
ì ì ìë©ëë¤. ê·¸ë¬ë Object.defineProperty()
를 ì¬ì©í ê²½ì° ìì±ì ì¸ì¤í´ì¤ ìì²´ì ì§ì ì ìíê² ë©ëë¤.
class Example {
get hello() {
return "world";
}
}
const obj = new Example();
console.log(obj.hello);
// "world"
console.log(Object.getOwnPropertyDescriptor(obj, "hello"));
// undefined
console.log(
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), "hello"),
);
// { configurable: true, enumerable: false, get: function get hello() { return 'world'; }, set: undefined }
ëª
ì¸ ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
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