Baseline Widely available *
Symbol
ì ìì±ìê° symbol
ìì ê°ì ë°ííë ë´ì¥ ê°ì²´ì
ëë¤. symbol
ìì ê°ì ì¬ë³¼ ê°, í¹ì ì§§ê² ì¬ë³¼ì´ë¼ê³ ë§ ë¶ë¥´ë©° ê³ ì í¨ì´ ë³´ì¥ë©ëë¤. ì¬ë³¼ì ê°ì²´ì ìì±ì ì¶ê°í ë ê³ ì í í¤ë¥¼ ë¶ì¬íì¬ ë¤ë¥¸ ì½ëì ì¶©ëíì§ ìëë¡ í ë ë§ì´ ì°ì´ë©°, ì´ë ê² ì¶ê°í ìì±ì ì¼ë°ì ì¸ ë°©ë²ì¼ë¡ë ì ê·¼í ì ìì¼ë¯ë¡ ì½í ííì 캡ìí, í¹ì ì ë³´ ìëì ì ê³µí©ëë¤.
모ë Symbol()
í¸ì¶ì ê°ê° ê³ ì í ì¬ë³¼ì ë°ííë ê²ì´ ë³´ì¥ë©ëë¤. 모ë Symbol.for("key")
í¸ì¶ì 주ì´ì§ ê° "key"
ì ëí´ ê°ì ì¬ë³¼ì ë°íí©ëë¤. Symbol.for("key")
를 í¸ì¶íì ë, 주ì´ì§ í¤ë¥¼ ê°ì§ ì¬ë³¼ì´ ì ì ì¬ë³¼ ë ì§ì¤í¸ë¦¬ì ì¡´ì¬íë©´ ê·¸ ì¬ë³¼ì ë°íí©ëë¤. ê·¸ë° ì¬ë³¼ì´ ìì¼ë©´ ìë¡ ìì±íê³ , ì ì ì¬ë³¼ ë ì§ì¤í¸ë¦¬ì ë±ë¡í í, ë°íí©ëë¤.
ìë¡ì´ ìì ì¬ë³¼ì ìì±íë ¤ë©´ Symbol()
ì í¸ì¶í©ëë¤. ì íì ì¼ë¡ ì¤ëª
문ìì´ì ì ê³µí ì ììµëë¤.
const sym1 = Symbol();
const sym2 = Symbol("foo");
const sym3 = Symbol("foo");
ì ì½ëë ì¸ ê°ì ìë¡ì´ ì¬ë³¼ì ìì±í©ëë¤. Symbol("foo")
ë 문ìì´ "foo"
를 ì¬ë³¼ë¡ ë³ííë ê²ì´ ìëë¼ë ì ì 주ìíì¸ì. ë§¤ë² í¸ì¶ë§ë¤ ìë¡ì´ ì¬ë³¼ì´ ìì±ë©ëë¤.
Symbol("foo") === Symbol("foo"); // false
new
ì°ì°ì를 ì¬ì©íë©´ TypeError
ê° ë°ìí©ëë¤.
const sym = new Symbol(); // TypeError
ë°ë¼ì ê°ë°ìê° ìë¡ì´ ì¬ë³¼ ê°ì ë§ëë ëì ëª
ìì ì¼ë¡ Symbol
ëí¼ ê°ì²´ë¥¼ ìì±íë 걸 ë°©ì§íëë°, ì¼ë°ì ì¼ë¡ ë¤ë¥¸ ìì ë°ì´í° íì
ë¤ì ëí¼ ê°ì²´(new Boolean
, new String
, new Number
)ë ìì±í ì ìë¤ë ì ì ìê°íë©´ ììíì§ ëª»í ëìì¼ ìë ììµëë¤.
ì ë§ë¡ Symbol
ëí¼ ê°ì²´ë¥¼ ìì±í´ì¼ íë©´ Object()
í¨ì를 ì¬ì©í ì ììµëë¤.
const sym = Symbol("foo");
typeof sym; // "symbol"
const symObj = Object(sym);
typeof symObj; // "object"
ì¬ë³¼ì ì ì¼íê² ì°¸ì¡° ëì¼ì±(ê°ì ì¬ë³¼ì ë ë² ë§ë¤ ì ìì)ì ê°ì§ë ìì ë°ì´í° íì
ì´ë¯ë¡ ê°ì²´ì ë¹ì·íê² ëìíë ë©´ì´ ììµëë¤. ì를 ë¤ì´, ì¬ë³¼ì ê°ë¹ì§ 컬ë ì
ëìì´ë©° ë°ë¼ì WeakMap
, WeakSet
, WeakRef
, FinalizationRegistry
ê°ì²´ì ì ì¥í ì ììµëë¤.
ììì ì´í´ë´¤ë Symbol()
í¨ì 구문ì íë¡ê·¸ë¨ì´ ì¢
ë£ë ëê¹ì§ ê³ ì í ì± ë¨ë ì¬ë³¼ì ìì±í©ëë¤. ì¬ë¬ íì¼ì 걸ì³, í¹ì ê°ì ë³ëì ì ì ì¤ì½í를 ê°ë ë ë¦ê¹ì§ë 걸ì³ì ì¬ì© ê°ë¥í ì¬ë³¼ì ìì±íë ¤ë©´ Symbol.for()
ë©ìëì Symbol.keyFor()
ë©ìë를 ì¬ì©íì¬ ì ì ì¬ë³¼ ë ì§ì¤í¸ë¦¬ì ì¬ë³¼ì ì¤ì íê³ ê°ì ¸ì¬ ì ììµëë¤.
ì°¸ê³ ë¡, "ì ì ì¬ë³¼ ë ì§ì¤í¸ë¦¬"ë ì¤ëª
ì ìí ììì ê°ë
ì´ë©° JavaScript ìì§ ë´ì ì¤ì ë°ì´í° 구조ìë ì¼ì¹íì§ ìì ì ììµëë¤. ì´ë° ë ì§ì¤í¸ë¦¬ê° ìì§ì ì¡´ì¬íë¤ê³ í´ë, ê·¸ ë´ì©ì for()
ì keyFor()
ë©ìë를 ì ì¸í ë¤ë¥¸ JavaScript ì½ëìì ì ê·¼í ì ììµëë¤.
Symbol.for(tokenString)
ë©ìëë 문ìì´ í¤ë¥¼ ë°ì ë ì§ì¤í¸ë¦¬ìì ì¬ë³¼ ê°ì ë°íí©ëë¤. ë°ëë¡ Symbol.keyFor(symbolValue)
ë©ìëë ì¬ë³¼ ê°ì ë°ì ëìíë 문ìì´ í¤ë¥¼ ë°íí©ëë¤. ìë¡ ë°ëëë ë©ìëì´ë¯ë¡ ìë ì½ëë true
ì
ëë¤.
Symbol.keyFor(Symbol.for("tokenString")) === "tokenString"; // true
ë±ë¡ë ì¬ë³¼ì ì무ë°ìë ììë¡ ìì±ë ì ìì¼ë¯ë¡, ëìëë 문ìì´ í¤ì ê±°ì ëì¼íê² ëìí©ëë¤. ë°ë¼ì ê°ë¹ì§ 컬ë ì
ëìì´ ìëë©°, WeakMap
, WeakSet
, WeakRef
, FinalizationRegistry
ê°ì²´ìë ì¬ì©í ì ììµëë¤.
Symbol
ìì±ìì ì ì ìì±ì 모ë ì¤ì¤ë¡ê° ì¬ë³¼ì´ë©°, ê·¸ ê°ì ë ë¦ì ê±¸ì³ ëì¼í©ëë¤. ì´ ì¬ë³¼ë¤ì 'ì ìë ¤ì§ ì¬ë³¼'ì´ë¼ê³ ë¶ë¥´ë©°, JavaScript ë´ì¥ ìì
ìì ì¼ì¢
ì "íë¡í ì½"ë¡ì ëìí©ëë¤. ì¬ì©ìë ì´ ì¬ë³¼ë¤ë¡ ì¸ì´ ëìì ë°ê¿ ì ììµëë¤. ì를 ë¤ì´, ìì±ì í¨ìì Symbol.hasInstance
ê° ì´ë¦ì¸ ë©ìëê° ìì¼ë©´, instanceof
ì°ì°ìë ëì ì ì´ ë©ìë를 ì¬ì©í©ëë¤.
ì ìë ¤ì§ ì¬ë³¼ ì ì JavaScriptë ì¼ë¶ ë´ì¥ ìì
ì ì¼ë°ì ì¸ ìì±ì ì¬ì©íìµëë¤. ì컨ë JSON.stringify
í¨ìë ê°ì²´ì toJSON()
ë©ìë를 ì¬ì©íê³ , String
í¨ìë ê°ì²´ì toString()
ê³¼ valueOf()
ë©ìë를 ì¬ì©í©ëë¤. íì§ë§, ì¸ì´ê° í¬í¨íë ìì
ì ìê° ì ì ëì´ê°ì ë°ë¼, ê°ê°ì ìì
ì "ë§ë² ìì±"ì¼ë¡ ì§ì íë©´ íì í¸íì±ì 깨ë¨ë¦¬ê³ ì¸ì´ì ëìì ì¶ë¡ í기 ì´ë µê² ë§ë¤ ì ììµëë¤. ì ìë ¤ì§ ì¬ë³¼ ëë¶ì, ë³´íµ ë¬¸ìì´ ìì±ë§ ì ê·¼íë ì¼ë°ì ì¸ ì½ë ì
ì¥ìì ì¸ì´ ëì ì¬ì©ì ì§ì ì "ë³´ì´ì§ ìê²" ëìµëë¤.
ì ìë ¤ì§ ì¬ë³¼ì MDNì í¬í¨í ì¬ë¬ ì¶ì²ìì ì´ë¦ ìì @@
를 ë¶ì¬ 구ë¶í©ëë¤. ì를 ë¤ì´ Symbol.hasInstance
ë @@hasInstance
ì²ë¼ ìëë¤. ì¬ë³¼ìë 리í°ë´ ííê° ì¡´ì¬íì§ ì기ë íê³ , ê·¸ë ë¤ê³ Symbol.hasInstance
를 ì°ë©´ ë¤ë¥¸ ë³ì¹ì¼ë¡ ê°ì ì¬ë³¼ì ê°ë¦¬í¬ ì ìë¤ë ì ì´ ëë¬ëì§ ì기 ë문ì
ëë¤. Function.name
ê³¼ "Function"
ì ì°¨ì´ì ë¹ì·í©ëë¤.
ì ìë ¤ì§ ì¬ë³¼ìë ê°ë¹ì§ 컬ë ì
ê°ë¥ ì¬ë¶ë¼ë ê°ë
ë¶í°ê° ì¡´ì¬íì§ ììµëë¤. ì´ ì¬ë³¼ë¤ì Array.prototype
ë±ì ë´ì¬ë ê°ì²´ì²ë¼ ê³ ì ë ìê° íë¡ê·¸ë¨ì ìëª
ë´ë´ ê³ ì íê² ì ì§ë기 ë문ì
ëë¤. ë°ë¼ì ì ìë ¤ì§ ì¬ë³¼ë¤ì WeakMap
, WeakSet
, WeakRef
, and FinalizationRegistry
ê°ì²´ì ì¬ì©í ì ììµëë¤.
Object.getOwnPropertySymbols()
ë©ìëë ì¬ë³¼ ë°°ì´ì ë°ííë©°, 주ì´ì§ ê°ì²´ì ì¬ë³¼ ìì±ì ì°¾ì ë ì¬ì©í ì ììµëë¤. ì°¸ê³ ë¡ ëª¨ë ê°ì²´ë ì´ê¸°í ì ìì²´ ì¬ë³¼ ìì±ì ê°ì§ ìì¼ë¯ë¡, ëì¤ì ì¬ë³¼ ìì±ì ì¶ê°íì§ ìë ì´ì ì´ ë©ìëê° ë°ííë ë°°ì´ì ë¹ì´ììµëë¤.
Symbol()
ìë¡ì´ Symbol
ê°ì²´ë¥¼ ìì±í©ëë¤. new Symbol()
ì²ë¼ ì¸ ì ìê³ í¨ìë¡ë§ ì¬ì©í´ì¼ íë¯ë¡ ì¼ë°ì ì¸ ìì±ììë ë¤ë¦
ëë¤.
ì ì ìì±ë¤ì ì ìë ¤ì§ ì¬ë³¼ì
ëë¤. ê°ê°ì ì¤ëª
ììë "Symbol.hasInstance
ë ... íë ë©ìëì
ëë¤"ì ê°ì ë§ì ì¬ì©íê² ì§ë§, ì´ê±´ ì´ë¤ ê°ì²´ê° í´ë¹ ì¬ë³¼ì ì´ë¦ì¼ë¡ íë ë©ìë를 ìì íê³ ìì ë를 ì미íë ê²ì´ì§, ì¬ë³¼ ìì²´ì ê°ì ì¤ëª
íë ê²ì´ ìëì 주ìí´ ì£¼ì¸ì.
Symbol.asyncIterator
ê°ì²´ì 기본 AsyncIterator를 ë°ííë ë©ìëì
ëë¤. for await...of
ìì ì¬ì©í©ëë¤.
Symbol.hasInstance
ìì±ì ê°ì²´ê° ì´ë¤ ê°ì²´ë¥¼ ìì ì ì¸ì¤í´ì¤ë¡ ì¸ì§íëì§ íë³íë ë©ìëì
ëë¤. instanceof
ìì ì¬ì©í©ëë¤.
Symbol.isConcatSpreadable
ê°ì²´ë¥¼ ë°°ì´ ììë¡ íííí ì ìëì§ ëíë´ë ë¶ë¦¬ì¸ ê°ì
ëë¤. Array.prototype.concat()
ìì ì¬ì©í©ëë¤.
Symbol.iterator
ê°ì²´ì 기본 ìí기를 ë°ííë ë©ìëì
ëë¤. for...of
ìì ì¬ì©í©ëë¤.
Symbol.match
문ìì´ì ì¼ì¹ íë³ì ìííë ë©ìëì
ëë¤. ê°ì²´ë¥¼ ì ê·ííìì¼ë¡ì¨ ì¬ì©í ì ìëì§ íë³í ëë ì°ì
ëë¤. String.prototype.match()
ìì ì¬ì©í©ëë¤.
Symbol.matchAll
문ìì´ì ëí ì ê·ííì ì¼ì¹ 결과를 ìííë ìí기를 ë°ííë ë©ìëì
ëë¤. String.prototype.matchAll()
ìì ì¬ì©í©ëë¤.
Symbol.replace
문ìì´ìì ì¼ì¹í íì 문ìì´ì ëì¹íë ë©ìëì
ëë¤. String.prototype.replace()
ìì ì¬ì©í©ëë¤.
Symbol.search
문ìì´ìì ì ê·ííìê³¼ ì¼ì¹í ì¸ë±ì¤ë¥¼ ë°ííë ë©ìëì
ëë¤. String.prototype.search()
를 ë°íí©ëë¤.
Symbol.species
íì ê°ì²´ë¥¼ ìì±í ë ì°ì´ë ìì±ì í¨ìì ëë¤.
Symbol.split
ì ê·ííìì´ ì¼ì¹í ì¸ë±ì¤ìì 문ìì´ì ë¶í íë ë©ìëì
ëë¤. String.prototype.split()
ìì ì¬ì©í©ëë¤.
Symbol.toPrimitive
ê°ì²´ë¥¼ ìì ê°ì¼ë¡ ë³ííë ë©ìëì ëë¤.
Symbol.toStringTag
ê°ì²´ì 기본 ì¤ëª
ì¼ë¡ ì¬ì©ëë 문ìì´ ê°ì
ëë¤. Object.prototype.toString()
ìì ì¬ì©í©ëë¤.
Symbol.unscopables
ì°ê´ë ê°ì²´ì with
íê²½ ë°ì¸ë©ìì ì ì¸í ìì±ì ì´ë¦ë¤ì ìì²´ ìì±ê³¼ ìì ìì±ì¼ë¡ ê°ì§ë ê°ì²´ ê°ì
ëë¤.
Symbol.for()
주ì´ì§ key
를 ê°ì§ 기존 ì¬ë³¼ì ì°¾ì ë°íí©ëë¤. ê·¸ë° ì¬ë³¼ì´ ìì¼ë©´ ìë¡ì´ ì¬ë³¼ì ìì±íê³ , key
를 ì¬ì©í´ ì ì ì¬ë³¼ ë ì§ì¤í¸ë¦¬ì ë±ë¡í©ëë¤.
Symbol.keyFor()
ì ì ì¬ë³¼ ë ì§ì¤í¸ë¦¬ìì 주ì´ì§ ì¬ë³¼ì í¤ë¥¼ ë°íí©ëë¤.
ì´ ìì±ë¤ì Symbol.prototype
ì ì ìëë©° 모ë Symbol
ì¸ì¤í´ì¤ê° ê³µì í©ëë¤.
Symbol.prototype.constructor
ì¸ì¤í´ì¤ ê°ì²´ë¥¼ ìì±íë ìì±ì í¨ìì
ëë¤. Symbol
ì¸ì¤í´ì¤ììì ì´ê¸° ê°ì Symbol
ìì±ìì
ëë¤.
Symbol.prototype.description
ì¬ë³¼ ì¤ëª ì ë´ì ì½ê¸° ì ì© ë¬¸ìì´ì ëë¤.
Symbol.prototype[@@toStringTag]
@@toStringTag
ìì±ì ì´ê¸° ê°ì 문ìì´ "Symbol"
. ì´ ìì±ì Object.prototype.toString()
ìì ì¬ì©í©ëë¤. íì§ë§ Symbol
ì ìì²´ì ì¼ë¡ toString()
ë©ìëë ìì íë¯ë¡, ì¬ë³¼ì thisArg
ë¡ ì§ì í´ì Object.prototype.toString.call()
ì í¸ì¶íì§ ìë ì´ì ì´ ìì±ì ì¬ì©ëì§ ììµëë¤.
Symbol.prototype.toString()
ì¬ë³¼ ì¤ëª
ì ë´ì 문ìì´ì ë°íí©ëë¤. Object.prototype.toString()
ë©ìë를 ì¬ì ìí©ëë¤.
Symbol.prototype.valueOf()
ì¬ë³¼ì ë°íí©ëë¤. Object.prototype.valueOf()
ë©ìë를 ì¬ì ìí©ëë¤.
Symbol.prototype[@@toPrimitive]()
ì¬ë³¼ì ë°íí©ëë¤.
typeof
ì°ì°ìë ì¬ë³¼ì ìë³íëë° ëìì´ ë ì ììµëë¤.
typeof Symbol() === "symbol";
typeof Symbol("foo") === "symbol";
typeof Symbol.iterator === "symbol";
ì¬ë³¼ íì
ë³í
ì¬ë³¼ ë³íì´ íìí ë 주ìí´ì¼ í ì ë¤ì ëë¤.
+sym
, sym | 0
, ...)íë ¤ê³ íë©´ TypeError
ê° ë°ìí©ëë¤.Object(sym) == sym
ì true
ì
ëë¤.Symbol("foo") + "bar"
ë TypeError
ì
ëë¤(ì¬ë³¼ì 문ìì´ë¡ ë³íí ì ìì). ëë¶ì ì¬ë³¼ìì ìë¡ì´ 문ìì´ ìì±ì ë§ëë ê²½ì°ë¥¼ ëì¹ì§ ìì ì ììµëë¤.String(sym)
ë³íì Symbol.prototype.toString()
í¸ì¶ê³¼ ê°ìµëë¤. íì§ë§ new String(sym)
ì ì¤ë¥ë¥¼ ëì§ë¯ë¡ 주ìíì¸ì.ì¬ë³¼ì for...in
ìíì ì´ê±°ëì§ ììµëë¤. ì´ì ëí´ Object.getOwnPropertyNames()
ë ì¬ë³¼ ê°ì²´ ìì±ì ë°ííì§ ììµëë¤. íì§ë§ Object.getOwnPropertySymbols()
를 ì¬ì©íë©´ ì¬ë³¼ ìì±ë¤ì ì°¾ì ì ììµëë¤.
const obj = {};
obj[Symbol("a")] = "a";
obj[Symbol.for("b")] = "b";
obj["c"] = "c";
obj.d = "d";
for (const i in obj) {
console.log(i);
}
// "c" "d"
ì¬ë³¼ê³¼ JSON.stringify()
JSON.stringify()
ë ì¬ë³¼ í¤ ìì±ì ìì í 무ìí©ëë¤.
JSON.stringify({ [Symbol("foo")]: "foo" });
// '{}'
ë ìì¸í ë´ì©ì JSON.stringify()
를 ì°¸ê³ íì¸ì.
ì¬ë³¼ ëí¼ ê°ì²´ë¥¼ ìì± í¤ë¡ ì¬ì©íë©´, ëí¼ ê°ì²´ë ë´ë¶ ì¬ë³¼ë¡ ë³íë©ëë¤.
const sym = Symbol("foo");
const obj = { [sym]: 1 };
obj[sym]; // 1
obj[Object(sym)]; // still 1
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
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