Baseline Widely available *
WeakMap
ãªãã¸ã§ã¯ãã¯ããã¼ãå¼±ãåç
§ããããã¼ã¨å¤ã®çµã®ã³ã¬ã¯ã·ã§ã³ã§ãããã¼ã¯ãªãã¸ã§ã¯ãã§ãªããã°ãªãããå¤ã¯ä»»æã®å¤ãåããã¨ãã§ãã¾ãã
WeakMap
ã«ã¤ãã¦ã¯ã WeakMap ãªãã¸ã§ã¯ãã®ã¬ã¤ã (ãã¼ä»ãã³ã¬ã¯ã·ã§ã³å
) ã§ãã詳ãã解説ãã¦ãã¾ãã
WeakMap ã®ãã¼ã¯ Object
ã«éãã¾ããããªããã£ãå ã¯ãã¼ã¨ãã¦ä½¿ãã¾ããï¼ä¾ãã° Symbol
㯠WeakMap
ã®ãã¼ã¨ãã¦ä½¿ãã¾ããï¼ã
map API ã¯ã4 ã¤ã® API ã¡ã½ããããå ±æããã 2 ã¤ã®é å (1 ã¤ã¯ãã¼ç¨ããã 1 ã¤ã¯å¤ç¨) ãç¨ãããã¨ã§ãJavaScript ã§å®è£ ã§ãã¾ãããã®ãããã«è¦ç´ ãè¨å®ããã¨ãããããã®é åã®æå¾ã«åæã«ãã¼ã¨å¤ã追å ãããã¨ã«ãªãã¾ãããã®çµæã両æ¹ã®é åã§ãã¼ã¨å¤ã®ã¤ã³ããã¯ã¹ã¯å¯¾å¿ãã¨ãã¦ãã¾ãããããããå¤ãåå¾ããã«ã¯ããã¹ã¦ã®ãã¼ãæä½ãã¦ä¸è´ãããã®ãè¦ã¤ããè¦ã¤ãã£ããã¼ã®ã¤ã³ããã¯ã¹ã使ç¨ãã¦å¤ã®é åãã対å¿ããå¤ãåãåºãã¾ãã
ããããå®è£ ã§ã¯ã主㫠2 ã¤ã®ä¸é½åãçãããã¨ã¨ãªãã¾ãã
O(n)
ã¨ãªãã㨠(n ã¯ãããä¸ã«ããããã¼ã®æ°) ã§ãã©ã¡ãã®æä½ãä¸è´ããå¤ãè¦ã¤ããããã«ãã¼ã®ãªã¹ããå復ããªããã°ãªããªãããã§ããããã«å¯¾ãã¦ããã¤ãã£ãã® WeakMap
ã§ã¯ããã¼ã¨ãªããªãã¸ã§ã¯ãã«å¯¾ãã¦ã¯"å¼±ã"åç
§ãä¿æããã¾ããããã«ããããã¼ã¨ãªã£ããªãã¸ã§ã¯ãã¸ã®åç
§ãä»ã«åå¨ããªãå ´åã«ããã®ãªãã¸ã§ã¯ãã¯ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã®å¯¾è±¡ã«å«ã¾ããããã«ãªãã¾ãããã¤ãã£ãã® WeakMap ã¯ãã¼ã¨ãã®ãã¼ã«é¢ããæ
å ±ããããã³ã°ããå ´åã«ããã¼ãã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ããã¦ããªãã¨ãã«ã ãæå³ãããããç¹ã«æç¨ãªæ§é ã§ãã
å¼±ãåç
§ãç¨ãããããWeakMap
ã®ãã¼ã¯åæã§ãã¾ããã ãã¼ã®ä¸è¦§ãåå¾ããã¡ã½ããã¯åå¨ãã¾ããããããå¯è½ã§ããã°ããã¼ã®ä¸è¦§ã¯ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã«ä¾åãããã¨ã«ãªããéæ±ºå®æ§ãçã¾ãã¾ãããã¼ã®ä¸è¦§ãå¿
è¦ãªå ´åã¯ãMap
ã使ããã¨ã«ãªãã¾ãã
WeakMap()
æ°ãã WeakMap
ãªãã¸ã§ã¯ããçæãã¾ãã
WeakMap.prototype.delete(key)
key
ã«é¢é£ããå¤ãåé¤ãã¾ãããã®å¾ WeakMap.prototype.has(key)
㯠false
ãè¿ãã¾ãã
WeakMap.prototype.get(key)
key
ã«é¢é£ããå¤ãè¿ãã¾ããè¦ã¤ãããªãå ´åãundefined
ãè¿ãã¾ãã
WeakMap.prototype.has(key)
WeakMap
ãªãã¸ã§ã¯ãå
ã« key
ã«é¢é£ããå¤ããããã©ãã示ã Boolean ãè¿ãã¾ãã
WeakMap.prototype.set(key, value)
WeakMap
ãªãã¸ã§ã¯ãå
ã« key
ã«å¯¾ããå¤ãè¨å®ããWeakMap
ãªãã¸ã§ã¯ããè¿ãã¾ãã
const wm1 = new WeakMap(),
wm2 = new WeakMap(),
wm3 = new WeakMap();
const o1 = {},
o2 = function () {},
o3 = window;
wm1.set(o1, 37);
wm1.set(o2, "azerty");
wm2.set(o1, o2); // å¤ã¯ï¼ãªãã¸ã§ã¯ãã¾ãã¯é¢æ°ãå«ãï¼ä½ã§ãã£ã¦ããã¾ãã¾ãã
wm2.set(o3, undefined);
wm2.set(wm1, wm2); // ãã¼ãå¤ãã©ããªãªãã¸ã§ã¯ãã§ããã¾ãã¾ããã WeakMap ã§ãã£ã¦ãããã®ã§ãï¼
wm1.get(o2); // "azerty"
wm2.get(o2); // wm2 ã«ã¯ o2 ã«é¢é£ä»ããããå¤ãç¡ãçºãundefined ãè¿ã£ã¦ãã¾ã
wm2.get(o3); // å¤ã undefined ã¨é¢é£ä»ãããã¦ããçºãundefined ãè¿ã£ã¦ãã¾ã
wm1.has(o2); // true
wm2.has(o2); // false
wm2.has(o3); // true (å¤ãé¢é£ä»ãããã¦ãããªãã°ããã¨ãå¤ã 'undefined' ã§ãã£ã¦ã true ã¨ãªãã¾ã)
wm3.set(o1, 37);
wm3.get(o1); // 37
wm1.has(o1); // true
wm1.delete(o1);
wm1.has(o1); // false
.clear() ã¡ã½ãããæã¤ WeakMap 風ã®ã¯ã©ã¹ã®å®è£
class ClearableWeakMap {
constructor(init) {
this._wm = new WeakMap(init);
}
clear() {
this._wm = new WeakMap();
}
delete(k) {
return this._wm.delete(k);
}
get(k) {
return this._wm.get(k);
}
has(k) {
return this._wm.has(k);
}
set(k, v) {
this._wm.set(k, v);
return this;
}
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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