æ¬ç« å°ä»ç»ç±é®ç´¢å¼çæ°æ®éåï¼Map
å Set
对象å
å«å¯ææå
¥é¡ºåºè¿ä»£çå
ç´ ã
Map
对象就æ¯ä¸ä¸ªç®åçé®/å¼å¯¹æ å°éåï¼å¯ä»¥æç
§æ°æ®æå
¥æ¶ç顺åºéåææçå
ç´ ã
ä¸é¢çä»£ç æ¼ç¤ºäºä½¿ç¨ Map
è¿è¡çä¸äºåºæ¬æä½ã请åè Map
以è·åæ´å¤çæ ·ä¾å宿´ç APIãä½ å¯ä»¥ä½¿ç¨ for...of
å¾ªç¯æ¥å¨æ¯ä¸æ¬¡è¿ä»£ä¸å¾å° [key, value]
æ°ç»ã
const sayings = new Map();
sayings.set("dog", "woof");
sayings.set("cat", "meow");
sayings.set("elephant", "toot");
sayings.size; // 3
sayings.get("dog"); // woof
sayings.get("fox"); // undefined
sayings.has("bird"); // false
sayings.delete("dog");
sayings.has("dog"); // false
for (const [key, value] of sayings) {
console.log(`${key} goes ${value}`);
}
// "cat goes meow"
// "elephant goes toot"
sayings.clear();
sayings.size; // 0
Object å Map çæ¯è¾
ä¸è¬å°ï¼object ä¼è¢«ç¨äºå°åç¬¦ä¸²ç±»åæ å°å°å¼ãObject
å
许设置é®å¼å¯¹ãæ ¹æ®é®è·åå¼ãå é¤é®ãæ£æµæä¸ªé®æ¯å¦åå¨ãä¸è¿ï¼Map
å¯¹è±¡è¿æä¸äºä¼ç¹ï¼å¯ä»¥æ´å¥½å°åºç¨äºæ å°å
³ç³»è¡¨ç¤ºä¸ã
Object
çé®å为å符串æ Symbol ç±»åï¼å¨ Map
éé®å¯ä»¥æ¯ä»»æç±»åãObject
ç大å°ï¼ä½æ¯å¯ä»¥å¾å®¹æå°è·å Map
ç大å°ï¼size
ï¼ãMap
çéåéµå¾ªå
ç´ çæå
¥é¡ºåºãObject
æååï¼æä»¥æ å°ä¸æä¸äºç¼ºççé®ãï¼å¯ä»¥ç¨ map = Object.create(null)
åé¿ï¼ãè¿ä¸æ¡æç¤ºå¯ä»¥å¸®ä½ å³å®ç¨ Map
è¿æ¯ Object
ï¼
Map
ãMap
ï¼å 为 Object
å°æ¯ä¸ªé®è§ä¸ºå符串ï¼ä¸ç®¡å®æ¯ä¸ä¸ªæ°åå¼ãå¸å°å¼è¿æ¯ä»»ä½å
¶ä»åå§å¼ãObject
ãWeakMap
æ¯é®/å¼å¯¹çéåï¼å
¶é®å¿
é¡»æ¯å¯¹è±¡æé注å符å·ï¼å
¶å¼ä¸ºä»»æ JavaScript ç±»åï¼å¹¶ä¸ä¸ä¼å¯¹å
¶é®å建强å¼ç¨ãä¹å°±æ¯è¯´ï¼ä¸ä¸ªå¯¹è±¡ä½ä¸ºé®åºç°å¨ WeakMap
ä¸å¹¶ä¸ä¼é»æ¢è¯¥å¯¹è±¡è¢«åå¾åæ¶ã䏿¦ä½ä¸ºé®ç对象被æ¶éï¼å
¶å¨ä»»ä½ WeakMap
ä¸çç¸åºå¼ä¹ä¼è¢«å徿¶éï¼åªè¦å®ä»¬æ²¡æå¨å
¶ä»å°æ¹è¢«å¼ºå¼ç¨ãå¯ä¸å¯ç¨ä½ WeakMap
é®çåå§ç±»åç±»åæ¯ symbolï¼æ´å
·ä½å°è¯´ï¼æ¯é注å symbolï¼å ä¸ºéæ³¨å symbol ä¿è¯æ¯å¯ä¸çï¼å¹¶ä¸ä¸è½è¢«éæ°å建ã
WeakMap
API ä¸ Map
API åºæ¬ç¸åãä¸è¿ï¼WeakMap
ä¸å
许è§å¯å
¶é®çæææ§ï¼è¿ä¹æ¯å®ä¸å
许æä¸¾çåå ãå æ¤ï¼æ²¡æä»»ä½æ¹æ³å¯ä»¥è·å WeakMap
ä¸çé®çå表ã妿æçè¯ï¼è¯¥å表å°åå³äºåå¾åæ¶çç¶æï¼ä»èå¼å
¥éç¡®å®æ§ã
å¯ä»¥å¨ WeakMap
åè页çâ为ä»ä¹ä½¿ç¨ WeakMapâå°èæ¥çæ´å¤ä¿¡æ¯å示ä¾ã
WeakMap
对象çä¸ä¸ªç¨ä¾æ¯åå¨ä¸ä¸ªå¯¹è±¡çç§ææ°æ®æéèå®ç°ç»èãNick Fitzgerald çåæâä½¿ç¨ ECMAScript 6 WeakMap éèå®ç°ç»èâæä¾äºä¸ä¸ªä¾åã对象å
é¨çç§ææ°æ®åæ¹æ³è¢«åå¨å¨ WeakMap
ç±»åç privates
åéä¸ãæææ´é²åºçåååå®ä¾é½æ¯å
¬å¼çï¼èå
¶ä»å
容齿¯å¤çä¸å¯è®¿é®çï¼å 为模åå¹¶æªå¯¼åº privates
对象ã
const privates = new WeakMap();
function Public() {
const me = {
// è¿éæ¯ç§ææ°æ®
};
privates.set(this, me);
}
Public.prototype.method = function () {
const me = privates.get(this);
// å¤ç `me` ä¸çç§ææ°æ®
// â¦
};
module.exports = Public;
Set Set 对象
Set
对象æ¯ä¸ç»å¯ä¸å¼çéåï¼å¯ä»¥æç
§æ·»å é¡ºåºæ¥éåãSet
ä¸çå¼åªè½åºç°ä¸æ¬¡ï¼å®å¨éå Set
䏿¯å¯ä¸çã
以ä¸ä»£ç æ¼ç¤ºäº Set
çåºæ¬æä½ï¼æ´å¤ç¤ºä¾å宿´ API å¯ä»¥åè Set
ã
const mySet = new Set();
mySet.add(1);
mySet.add("some text");
mySet.add("foo");
mySet.has(1); // true
mySet.delete("foo");
mySet.size; // 2
for (const item of mySet) {
console.log(item);
}
// 1
// "some text"
æ°ç»å Set ä¹é´ç转æ¢
å¯ä»¥ä½¿ç¨ Array.from
æå±å¼è¯æ³æ¥å®æéåå°æ°ç»ç转æ¢ãåæ ·ï¼Set
çæé 彿°æ¥åæ°ç»ä½ä¸ºåæ°ï¼å¯ä»¥å®æä» Array
å° Set
ç转æ¢ã
夿³¨ï¼ Set
对象åå¨å¯ä¸å¼ï¼æä»¥æ°ç»è½¬æ¢ä¸º Set æ¶ï¼ä»»ä½éå¤å¼å°ä¼è¢«å é¤ï¼
Array.from(mySet);
[...mySet2];
mySet2 = new Set([1, 2, 3, 4]);
æ°ç»å Set ç对æ¯
ä¸è¬æ
åµä¸ï¼å¨ JavaScript ä¸ä½¿ç¨æ°ç»æ¥åå¨ä¸ç»å
ç´ ï¼èæ°ç Set
对象æè¿äºä¼å¿ï¼
arr.splice(arr.indexOf(val), 1)
ï¼å 餿°ç»å
ç´ æçä½ä¸ãSet
对象å
è®¸æ ¹æ®å¼å é¤å
ç´ ï¼èæ°ç»ä¸å¿
须使ç¨åºäºå
ç´ ä¸æ ç splice
æ¹æ³ãindexOf
æ¹æ³æ æ³æ¾å° NaN
å¼ãSet
对象åå¨å¯ä¸å¼ï¼æä»¥ä¸éè¦æå¨å¤çå
å«éå¤å¼çæ
åµãWeakSet
对象æ¯å¯æ¶éåå¾å¼çéåï¼å
æ¬å¯¹è±¡åéæ³¨å symbolãWeakSet
ä¸çå¼åªè½åºç°ä¸æ¬¡ãå®å¨ WeakSet
çéå䏿¯å¯ä¸çã
ä¸ Set
对象ç主è¦åºå«æï¼
Set
ç¸åï¼WeakSet
æ¯å¯¹è±¡æ symbol çéåï¼è䏿¯ä»»ä½ç±»åçä»»æå¼çéåãWeakSet
çå¼±æ¯æéåä¸ç对象æ¯å¼±å¼ç¨çã妿 WeakSet
ä¸åå¨çä¸ä¸ªå¯¹è±¡ä¸åå¨å
¶ä»çå¼ç¨ï¼é£ä¹å®å°±ä¼è¢«åå¾åæ¶ãè¿ä¹æå³çéåä¸ä¸ååå¨å½å对象ãWeakSet
ä¸å¯æä¸¾ãWeakSet
对象çç¨ä¾æéãå®ä»¬ä¸ä¼æ³é²å
åï¼å æ¤å¯ä»¥å®å
¨å°ä½¿ç¨ DOM å
ç´ ä½ä¸ºé®ï¼å¹¶å°å
¶æ è®°ç¨äºè·è¸ªçç®çã
Map
对象å Set
对象çé®åå¼ççå¼å¤æé½åºäº SameValueZero ç®æ³ï¼
===
ã-0
å +0
ç¸çã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