Baseline Widely available *
WeakSet
ãªãã¸ã§ã¯ãã¯ãã³ã¬ã¯ã·ã§ã³ã«å¼±ãåç
§ããããªãã¸ã§ã¯ããæ ¼ç´ãããã¨ãã§ãã¾ãã
WeakSet
ãªãã¸ã§ã¯ãã¯ã³ã¬ã¯ã·ã§ã³ãªãã¸ã§ã¯ãã§ãã Set
ã¨åæ§ã«ã WeakSet
å
ã®åãªãã¸ã§ã¯ãã¯ä¸åº¦ã ãåå¨ãã¾ããããªãã¡ã WeakSet
ã³ã¬ã¯ã·ã§ã³å
ã§åºæã«ãªãã¾ãã
Set
ãªãã¸ã§ã¯ãã¨ã®ä¸»ãªéãã¯ä¸è¨ã®éãã§ãã
WeakSet
ã¯ãªãã¸ã§ã¯ãã®ã¿ã®ã³ã¬ã¯ã·ã§ã³ã§ãã Set
ã®ããã«ãä»»æã®åã®èªç±ãªå¤ãå
¥ãããã¨ã¯ã§ãã¾ããã
WeakSet
ã¯å¼±ãåç
§ã§ããã³ã¬ã¯ã·ã§ã³å
ã®ãªãã¸ã§ã¯ãã¸ã®å¼±ãåç
§ã§ä¿æããã¾ãã WeakSet
å
ã«æ ¼ç´ããã¦ãããªãã¸ã§ã¯ãã¸ã®åç
§ãä»ã«ãªãå ´åãã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã«ããåé¤ããã¾ãã
ã¡ã¢: ããã¯ããã®ã³ã¬ã¯ã·ã§ã³ã«æ ¼ç´ããã¦ãããªãã¸ã§ã¯ãã®ç¾å¨ã®ãªã¹ããåå¨ããªããã¨ãæå³ãã¾ãã WeakSets
ã¯åæå¯è½ã§ã¯ããã¾ããã
èªåèªèº«ãå帰çã«å¼ã³åºã颿°ã¯ãã©ã®ãªãã¸ã§ã¯ããå¦çæ¸ã¿ã§ãããã追跡ãããã¨ã§ã循ç°ãããã¼ã¿æ§é ãé²ãå¿ è¦ãããã¾ãã
WeakSet
ã¯ãã®ç®çã«çæ³çã§ãã
// Execute a callback on everything stored inside an object
function execRecursively(fn, subject, _refs = null) {
if (!_refs) _refs = new WeakSet();
// Avoid infinite recursion
if (_refs.has(subject)) return;
fn(subject);
if ("object" === typeof subject) {
_refs.add(subject);
for (let key in subject) execRecursively(fn, subject[key], _refs);
}
}
const foo = {
foo: "Foo",
bar: {
bar: "Bar",
},
};
foo.bar.baz = foo; // Circular reference!
execRecursively((obj) => console.log(obj), foo);
ããã§ã WeakSet
ã¯æåã®å®è¡æã«ä½æããããã®å¾ã®é¢æ°å¼ã³åºãã®ãã³ã« (å
é¨ã® _refs
弿°ã使ç¨ãã¦) 渡ããã¾ãã
ãªãã¸ã§ã¯ãã®æ°ãæ¢ç´¢é åºã¯éè¦ã§ã¯ãªãã®ã§ããªãã¸ã§ã¯ãã®åç
§ã追跡ããã«ã¯ WeakSet
ã®ã»ãã Set
ããããç¹ã«å·¨å¤§ãªæ°ã®ãªãã¸ã§ã¯ããå¦çããå ´åã«ã¯ãããµãããã (ããã¦æ§è½ããã) ãã®ã§ãã
WeakSet()
æ°ããWeakSet
ãªãã¸ã§ã¯ããçæãã¾ãã
WeakSet.prototype.add(value)
value
ã WeakSet
ãªãã¸ã§ã¯ãã«è¿½å ãã¾ãã
WeakSet.prototype.delete(value)
value
ã WeakSet
ãªãã¸ã§ã¯ãããåé¤ãã¾ããåé¤å¾ã WeakSet.prototype.has(value)
㯠false
ãè¿ãã¾ãã
WeakSet.prototype.has(value)
value
ã WeakSet
ãªãã¸ã§ã¯ãå
ã®è¦ç´ ã«å«ã¾ãã¦ãããã©ããã示ãè«çå¤ãè¿ãã¾ãã
const ws = new WeakSet();
const foo = {};
const bar = {};
ws.add(foo);
ws.add(bar);
ws.has(foo); // true
ws.has(bar); // true
ws.delete(foo); // foo ã set ããåé¤
ws.has(foo); // false, foo ã¯å餿¸ã¿
ws.has(bar); // true, bar ã¯æ®ã£ã¦ãã
foo !== bar
ã§ãããã¨ã«æ³¨æãã¦ãã ããããããã¯ä¼¼ããªãã¸ã§ã¯ãã§ãããã¾ã£ããåããªãã¸ã§ã¯ãã§ã¯ããã¾ããããããã£ã¦ã両æ¹ã®ãªãã¸ã§ã¯ãã set ã«è¿½å ããã¾ãã
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