ì´ë² ì¥ììë ì ë ¥ë í¤ê°ì 기ì¤ì¼ë¡ ì ë ¬ëë ë°ì´í°ì ì§í©(ìë£ êµ¬ì¡°)ì ëí´ ìê° í ê²ì´ë¤. Mapê³¼ Setì ì ë ¥ë ììëë¡ ë°ë³µì ì¼ë¡ ì ê·¼ ê°ë¥í ììë¤ì í¬í¨íê³ ìë¤.
MapsMap
ê°ì²´
ECMAScript 6ìì ê°ë¤ì 매íí기 ìí ìë¡ì´ ë°ì´í° 구조를 ìê° íê³ ìë¤. ê·¸ì¤ íëì¸ Mapê°ì²´ë ê°ë¨í í¤ì ê°ì ìë¡ ì°ê²°(매í)ìì¼ ì ì¥íë©° ì ì¥ë ììëë¡ ê° ììë¤ì ë°ë³µì ì¼ë¡ ì ê·¼í ì ìëë¡ íë¤.
ë¤ì ì½ëë Mapì´ ì ê³µíë 기본ì ì¸ ê¸°ë¥ë¤ì ë³´ì¬ ì£¼ê³ ìë¤. ë ë§ì ìì ì 모ë 기ë¥ì ëí API를 ë³¼ë ¤ë©´ Map
íì´ì§ë¥¼ ì°¸ê³ íë©´ ëë¤. Mapê°ì²´ì ì ì¥ëì´ ìë ê° ììë¤ì [í¤, ê°] ííì ë°°ì´ë¡ ë°ë³µì ì¼ë¡ ë°íí´ì£¼ë for...of
를 ì¬ì©í ì ìë¤.
var sayings = new Map();
sayings.set("dog", "woof");
sayings.set("cat", "meow");
sayings.set("elephant", "toot");
sayings.size; // 3
sayings.get("fox"); // undefined
sayings.has("bird"); // false
sayings.delete("dog");
for (var [key, value] of sayings) {
console.log(key + " goes " + value);
}
// "cat goes meow"
// "elephant goes toot"
Objectì Map ë¹êµ
ì íµì ì¼ë¡ objects ë 문ìì´ì ê°ì 매ííë ë° ì¬ì©ëìë¤. Objectë í¤ë¥¼ ê°ì¼ë¡ ì¤ì íê³ , ê°ì ê²ìíê³ , í¤ë¥¼ ìì íê³ , í¤ì ì ì¥ë ë´ì©ì ê²ì í ì ìê² ë§ë¤ì´ì¤ë¤. ê·¸ë¬ë Map ê°ì²´ë ë ëì ë§µì´ ëëë¡ íë ëª ê°ì§ ì¥ì ì ê°ì§ê³ ìë¤.
Strings
ì´ë©°, Mapì í¤ë 모ë ê°ì ê°ì§ ì ìë¤.Object í¹ì Mapì¤ì ì´ë ê²ì ì¬ì©í ì§ë¥¼ ê²°ì íëë° ëìì ì¤ ëê°ì§ íì´ ìë¤:
WeakMap
ê°ì²´
WeakMap
ê°ì²´ë objectë§ì í¤ë¡ íì©íê³ ê°ì ììì ê°ì íì©íë í¤/ê° ííì ììì ì§í©ì´ë¤. í¤ê° ê°ì§ê³ ìë ê°ì²´ì ëí 참조ë ê°ì²´ì ëí ì°¸ì¡°ê° ëì´ì ì¡´ì¬íì§ ìì ê²½ì° garbage collection(GC)ì ìê±° ëìì´ ëë ì½í 참조를 ì미íë¤. WeakMap
APIë Map APIì ëì¼íë¤.
ë¨ íê°ì§ Mapê°ì²´ì ë¤ë¥¸ ì ì WeakMapì í¤ë¤ì ì´ê±°íì´ ìëë¼ë ì ì´ë¤. (ì¦, í¤ ëª©ë¡ì ì ê³µí´ ì£¼ë ë©ìëê° ìë¤ë ê²ì´ë¤.) ë§ì½ì í¤ ëª©ë¡ì ì ê³µíë¤ë©´ garbage collectionì ìí, ê²°ê³¼ì ë°ë¼ í¤ ëª©ë¡ì´ ë³íê² ë ê²ì´ë¤. ì´ë ë¹ ê²°ì ì±ì ì¼ê¸°íë¤.
WeakMapì ëí ë ë§ì ì ë³´ì ìì ì½ë ê·¸ë¦¬ê³ "ì WeakMapì ì¬ì©íì§?"를 ë³´ê³ ì¶ë¤ë©´ WeakMap
íì´ì§ë¥¼ ì°¸ê³ íë©´ ëë¤.
WeakMap
를 ì¬ì©íë íê°ì§ ê²½ì°ë ê°ì²´ì ì¬ì ì¸ ì 보를 ì ì¥í기 ìí´ì ì´ê±°ë ìì¸ êµ¬í ë´ì©ì ì¨ê¸°ê¸° ìí ê²ì´ë¤. ë¤ìì ìì ë Nick Fitzgeraldì ë¸ë¡ê·¸ ê¸- "Hiding Implementation Details with ECMAScript 6 WeakMaps"-ìì ê°ì ¸ì¨ ê²ì´ë¤. ê°ì²´ê° ê°ì§ê³ ìë ê·¸ë ì§ë§ ì¸ë¶ì ê³µê°ëì§ ìë(private) ë°ì´í°ì ë©ìëë¤ì WeakMap
ê°ì²´ì¸ privates
ì ì ì¥ì´ ëë¤. ì¸ì¤í´ì¤ë¥¼ íµí´ ì ê·¼ ê°ë¥í 모ë ê²ë¤ê³¼ prototypeì publicì´ê³ ë¤ë¥¸ ê²ë¤ì ì¸ë¶ììë ì ê·¼ì´ ë¶ê°íë¤ ê·¸ ì´ì ë privates
ë 모ëë¡ë¶í° ë´ë³´ë´ê¸°(export)ê° ëì§ ì기 ë문ì´ë¤.
const privates = new WeakMap();
function Public() {
const me = {
// Private data goes here
};
privates.set(this, me);
}
Public.prototype.method = function () {
const me = privates.get(this);
// Do stuff with private data in `me`...
};
module.exports = Public;
Sets Set
object
Set
ê°ì²´ë ê°ë¤ì ì§í©ì´ë¤. ì
ë ¥ë ìììë°ë¼ ì ì¥ë ìì를 ë°ë³µì²ë¦¬í ì ìë¤. Setì ì¤ë³µë ê°ì íì©íì§ ìëë¤. ë°ë¼ì í¹ì ê°ì Setë´ìì íëë§ ì¡´ì¬ íê² ëë¤.
ìëì ì½ëë Setì 기본ì ì¸ ëìë¤ì ë³´ì¬ ì¤ë¤. ë ë§ì ìì ì 모ë APIë Set
참조 íì´ì§ë¥¼ ë³´ë©´ ëë¤.
var mySet = new Set();
mySet.add(1);
mySet.add("some text");
mySet.add("foo");
mySet.has(1); // true
mySet.delete("foo");
mySet.size; // 2
for (let item of mySet) console.log(item);
// 1
// "some text"
ë°°ì´ê³¼ Setì ìí¸ ë³í
Array.from
í¹ì spread operator를 íµí´ Setê°ì²´ë¥¼ ê°ì§ê³ Array
ì ìì±í ì ìë¤. ëí Set ìì±ìë ë°°ì´ì ì¸ìë¡ ë°ì ì ìê³ í´ë¹ ë°°ì´ì Setê°ì²´ì ììë¡ ì ì¥íë¤. íë² ë ì기ìí¤ë©´ Setê°ì²´ë ì¤ë³µë ê°ì ì ì¥íì§ ì기ë문ì 주ì´ì§ ë°°ì´ë´ì ì¤ë³µë ììë¤ì ì ê±°ëì´ Setì¼ë¡ ë³íëë¤.
Array.from(mySet);
[...mySet2];
mySet2 = new Set([1, 2, 3, 4]);
ë°°ì´ê³¼ Setë¹êµ
ì¼ë°ì ì¼ë¡ Javascriptìì ë°°ì´ì í¹ì ììì ì§í©ì ì ì¥íë¤. íì§ë§ Setê°ì²´ë ëªê°ì§ ì´ì ì ì ê³µíë¤.
indexOf
ë©ìë를 ì¬ì©íì¬ ë°°ì´ë´ì í¹ì ììê° ì¡´ì¬íëì§ íì¸íë ê²ì ë리ë¤.NaN
ì ë°°ì´ìì indexOfë©ìëë¡ ì°¾ì ì ìë¤.WeakSet
ê°ì²´
WeakSet
objects are collections of objects. An object in the WeakSet
may only occur once; it is unique in the WeakSet
's collection and objects are not enumerable.
WeakSet
ê°ì²´ë ê°ì²´ë¥¼ ì ì¥íë ì¼ì¢
ì ì§í©ì´ë¤. WeakSetë´ì ì¤ë³µë ê°ì²´ë ìì¼ë©° WeakSetë´ì ìì를 ì´ê±°í ìë ìë¤.
Set
ê³¼ ê°ì¥ í° ì°¨ì´ì ì ë¤ìê³¼ ê°ë¤.
Setê³¼ë ë¤ë¥´ê² WeakSetì ê°ì²´ì ì§í©ì´ë©° ê°ì²´ë§ ì ì¥í ì ìë¤. í¹ì typeì ê°ì ì ì¥í ìë ìë¤.
WeakSetê°ì²´ì ì¬ì© ì¬ë¡ë ì íëì´ ìë¤. ë©ëª¨ë¦¬ ëìê° ë°ìëì§ ì기ë문ì ìì íê² DOMìì를 í¤ë¡ ì ì¥í ì ìê³ ì를 ë¤ë©´ ì¶ì ì ìí´ DOMììë¤ì WeakSetì ì ì¥í ì ìë¤.
Mapê³¼ Setì í¤ì ê°ì ëì¹ì±
Mapê°ì²´ì keyì ëí ëì¹ì± ë¹êµì Setê°ì²´ì ê°ì ëí ëì¹ì± ë¹êµ 모ë "same-value-zero algorithm"ì 근거íë¤.
=== ë¹êµ ì°ì°ê³¼ ê°ì´ ìëíë¤.
NaN
ë ì기 ìì íê³ ê°ë¤ê³ ê°ì£¼íë¤. (===ìë ë°ëë¡)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