Baseline Widely available *
WeakRef
ãªãã¸ã§ã¯ãã¯ãã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ãåãããã¨ã妨ããªãä»ã®ãªãã¸ã§ã¯ãã¸ã®å¼±ãåç
§ãä¿æãã¾ãã
WeakRef
ãªãã¸ã§ã¯ãã¯ãªãã¸ã§ã¯ãã¸ã®å¼±ãåç
§ãæã¡ãããã¯ã¿ã¼ã²ããã¾ãã¯ãªãã¡ã¬ã³ãã¨å¼ã°ãã¾ãããªãã¸ã§ã¯ãã¸ã®å¼±ãåç
§ã¯ãã¬ãã¼ã¸ã³ã¬ã¯ã¿ã¼ã«ãããªãã¸ã§ã¯ãã®ååã妨ããªãåç
§ã§ãã対ç
§çã«ãé常ã®ï¼ã¾ãã¯å¼·ãï¼åç
§ã¯ãªãã¸ã§ã¯ããã¡ã¢ãªã¼ã«ä¿æãã¾ãããªãã¸ã§ã¯ããå¼·ãåç
§ãæããªããªã£ãå ´åã JavaScript ã¨ã³ã¸ã³ã®ã¬ãã¼ã¸ã³ã¬ã¯ã¿ã¼ã¯ããªãã¸ã§ã¯ããç ´æ£ãã¦ã¡ã¢ãªã¼ãååå¾ãããã¨ãããã¾ãããããªãã¨ãå¼±ãåç
§ãããªãã¸ã§ã¯ããåå¾ãããã¨ã¯ã§ããªããªãã¾ãã
æªç»é²ã®ã·ã³ãã«ãã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³å¯è½ã§ãããããWeakRef
ãªãã¸ã§ã¯ãã®å¯¾è±¡ã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ãããã ãã使ç¨ããç¨éã¯éããã¾ãã
WeakRef
ã®æ£ãã使ç¨ã«ã¯æ
éãªæ¤è¨ãå¿
è¦ã§ãããå¯è½ã§ããã°é¿ããæ¹ãè¯ãã§ããããã¾ãã仿§ã§ä¿è¨¼ããã¦ããªãç¹å®ã®åä½ã«ä¾åããªããã¨ãéè¦ã§ããã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ããã¤ãã©ã®ããã«ãããã¦ã©ã®ããã«çºçãããã¯ã使ç¨ãã¦ãã JavaScript ã¨ã³ã¸ã³ã®å®è£
ã«ä¾åãã¾ããããã¨ã³ã¸ã³ã§è¦³å¯ããåä½ããå¥ã®ã¨ã³ã¸ã³ãåãã¨ã³ã¸ã³ã®å¥ã®ãã¼ã¸ã§ã³ããããã¯åãã¨ã³ã¸ã³ã®åããã¼ã¸ã§ã³ã§ãå°ãéãç¶æ³ã§ã¯ç°ãªãå¯è½æ§ãããã¾ããã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã¯ã JavaScript ã¨ã³ã¸ã³ã®å®è£
è
ã常ã«è§£æ±ºçãæ¹è¯ãã¦ããé£ããåé¡ã§ãã
ããã§ã¯ã WeakRef
å°å
¥ã®ææ¡ã®èè
ãçãè¾¼ãã å
·ä½çãªãã¤ã³ããããã¤ãç´¹ä»ãã¾ãã
WeakRef ã«ãããæ³¨æã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã¯è¤éã§ããã¢ããªã±ã¼ã·ã§ã³ãããã¯ã©ã¤ãã©ãªã¼ã WeakRef ã®ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã®è§£æ¾å¦çãã峿ã«ãã¡ã¤ãã©ã¤ã¶ã¼ï¼è§£æ¾å¦çã®ã³ã¼ã«ããã¯ï¼ã®å¼ã³åºãå¦çã«ä¾åãã¦ããå ´åã¯ãäºæ³ããåä½ã¨ã¯ç°ãªãåä½ãè¡ãããããã¾ãããè§£æ¾å¦çã¯äºæ³ãããããªãå¾ã«è¡ããããããããã¯è¡ãããªãããã§ãã以ä¸ã«æããæ§ã ãªåå ãèãããã¾ãã
- ãããªãã¸ã§ã¯ãã¯ãå¥ã®ãªãã¸ã§ã¯ããããã£ã¨æ©ãã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ãããããããã¾ããããã¨ããä¸ä»£éåãªã©ã«ãã£ã¦åãæç¹ã§å°éã§ããªããªã£ãã¨ãã¦ãã§ãã
- ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã®ä½æ¥ã¯ãã¤ã³ã¯ãªã¡ã³ã¿ã«æè¡ãã³ã³ã«ã¬ã³ãæè¡ã使ç¨ãã¦ãæéãããã¦åå²ããããã¨ãããã¾ãã
- ã¡ã¢ãªã¼ä½¿ç¨éãã¬ã¹ãã³ã¹ã®ãã©ã³ã¹ãã¨ãããã«ããã¾ãã¾ãªã©ã³ã¿ã¤ã ãã¥ã¼ãªã¹ãã£ãã¯ã使ç¨ããå¯è½æ§ãããã¾ãã
- JavaScript ã¨ã³ã¸ã³ã¯ãå°éã§ããªãããã«è¦ãããã¨ï¼ä¾ãã°ãã¯ãã¼ã¸ã£ãã¤ã³ã©ã¤ã³ãã£ãã·ã¥ãªã©ï¼ã¸ã®åç §ãä¿æãããã¨ãããã¾ãã
- JavaScript ã¨ã³ã¸ã³ãç°ãªãã°ããããã®ãã¨ã¯ç°ãªãå½¢ã§è¡ãããããããã¾ããããåãã¨ã³ã¸ã³ã§ããã¼ã¸ã§ã³ã«ãã£ã¦ã¢ã«ã´ãªãºã ãå¤ããããããã¾ããã
- è¤éãªè¦å ã«ãã£ã¦ãç¹å®ã® API ã使ç¨ãã¦ããå ´åãªã©ããªãã¸ã§ã¯ããäºæãã¬æç¹ã¾ã§ä¿æããããã¨ãããã¾ãã
WeakRef
ã使ããç´å¾ãã¾ã㯠WeakRef
ã® deref
ã¡ã½ããããã¿ã¼ã²ãããªãã¸ã§ã¯ããåå¾ããå ´åããã®ã¿ã¼ã²ãããªãã¸ã§ã¯ãã¯ç¾å¨ã® JavaScript ã®ã¸ã§ãï¼ã¹ã¯ãªããã¸ã§ãã®çµããã«å®è¡ãããããã¹ãªã¢ã¯ã·ã§ã³ã¸ã§ããå«ãï¼ãçµããã¾ã§åãæ»ããã¾ãããããªãã¡ãã¤ãã³ãã«ã¼ãã®ã¿ã¼ã³ã®éã ãããªãã¸ã§ã¯ããååå¾ãããã®ããè¦ãããã¨ãã§ãã¾ããããã¯ä¸»ã«ãæå®ããã JavaScript ã¨ã³ã¸ã³ã®ã¬ãã¼ã¸ã³ã¬ã¯ã¿ã®æåãã³ã¼ãã§æããã«ãããã¨ãé¿ããããã§ããï¼ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã¯é£ããåé¡ã§ããJavaScriptã¨ã³ã¸ã³ã®å®è£
è
ã¯å¸¸ã«ãããã¯ãã¾ãããæ¹æ³ãæ´ç·´ããæ¹åãã¦ãã¾ããï¼WeakRef
ãåãã¿ã¼ã²ãããæã¤å ´åãäºãã«ä¸è´ãã¾ãããã®ãã¡ã®ä¸ã¤ã§ deref
ãå¼ã³åºããçµæã¯ããã®ãã¡ã®ããä¸ã¤ã§ deref
ãå¼ã³åºããçµæã¨ä¸è´ãã¾ãï¼åãã¸ã§ãã§ï¼ãWeakRef
ã®å¯¾è±¡ã FinalizationRegistry
ã«ãããå ´åã WeakRef
ã®å¯¾è±¡ã¯ã¬ã¸ã¹ããªã¼ã«é¢é£ããã¯ãªã¼ã³ã¢ããã³ã¼ã«ããã¯ãå¼ã³åºãããåã«ãåæã«ã¯ãªã¢ããã¾ããWeakRef
ã®å¯¾è±¡ã夿´ãããã¨ã¯ã§ããã常ã«å
ã®å¯¾è±¡ãªãã¸ã§ã¯ããããã®å¯¾è±¡ãååå¾ãããã¨ãã« undefined
ã«ãªãã ãã§ããWeakRef
㯠deref
ãã undefined
ãè¿ããªãããããã¾ããããã¨ãã対象ã¨ãããªãã¸ã§ã¯ããä½ãå¼·ãä¿æããã¦ããªãã¦ããã¬ãã¼ã¸ã³ã¬ã¯ã¿ã¼ããã®ãªãã¸ã§ã¯ããåãæ»ããã¨ã決å®ããªããããããªãããã§ããWeakRef()
æ°ãã WeakRef
ãªãã¸ã§ã¯ããçæãã¾ãã
ãããã®ããããã£ã¯ WeakRef.prototype
ã§å®ç¾©ããã¦ããããã¹ã¦ã® WeakRef
ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
WeakRef.prototype.constructor
çç¥å¯
ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã§ãã WeakRef
ã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯ WeakRef
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
ã¡ã¢: ãã®ããããã£ã¯ä»æ§ä¸ "normative optional" ã¨ããã¦ãããé©åæ§ã®ããå®è£
ã§ã¯ constructor
ããããã£ãå
¬éããªããã¨ãæå³ãã¦ãã¾ããããã«ãããä»»æã®ã³ã¼ãã WeakRef
ã³ã³ã¹ãã©ã¯ã¿ã¼ãåå¾ããã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ãç£è¦ãããã¨ãã§ããªããªãã¾ãããããã主è¦ãªã¨ã³ã¸ã³ã¯ãã¹ã¦æ¢å®ã§ã¯å
¬éãã¦ãã¾ãã
WeakRef.prototype[Symbol.toStringTag]
@@toStringTag
ããããã£ã®åæå¤ã¯æåå "WeakRef"
ã§ãããã®ããããã£ã¯ Object.prototype.toString()
ã§ä½¿ç¨ããã¾ãã
WeakRef.prototype.deref()
WeakRef
ãªãã¸ã§ã¯ãã®å¯¾è±¡ãªãã¸ã§ã¯ããè¿ããã対象ãªãã¸ã§ã¯ããæ¢ã«ååããã¦ããå ´å㯠undefined
ãè¿ãã¾ãã
ãã®ä¾ã§ã¯ã DOM è¦ç´ ã«è¡¨ç¤ºãããã«ã¦ã³ã¿ã¼ãéå§ããããã®è¦ç´ ãåå¨ããªããªã£ãã¨ãã«åæ¢ããã¾ãã
class Counter {
constructor(element) {
// Remember a weak reference to the DOM element
this.ref = new WeakRef(element);
this.start();
}
start() {
if (this.timer) {
return;
}
this.count = 0;
const tick = () => {
// Get the element from the weak reference, if it still exists
const element = this.ref.deref();
if (element) {
element.textContent = ++this.count;
} else {
// The element doesn't exist anymore
console.log("The element is gone.");
this.stop();
this.ref = null;
}
};
tick();
this.timer = setInterval(tick, 1000);
}
stop() {
if (this.timer) {
clearInterval(this.timer);
this.timer = 0;
}
}
}
const counter = new Counter(document.getElementById("counter"));
setTimeout(() => {
document.getElementById("counter").remove();
}, 5000);
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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