[英]Are event listeners removed when object is set to null in Javascript?
我正在嘗試使用對等 js 功能,我們在其中創建對等節點並使用相應的事件偵聽器,即當對等節點創建、關閉、連接和其他內容時,我正在嘗試在事件偵聽器中使用它以使其工作就像一項服務。 像這樣的東西:
class Demo extends EventEmitter {
private peer: Peer | null = null;
createPeerConnection() {
this.peer = new Peer();
this.peer.on('open', () => {
// Some stuff done
this.emit("Peer");
});
this.peer.on('close', () => {
// Some more stuff done
this.emit("Closed");
});
}
closePeerConnection() {
this.peer = null;
}
我知道對等方有 destroy 方法,但是假設由於某種原因我將對象設置為 null,是否也會刪除連接的事件偵聽器?
...當對象在 Javascript 中設置為 null 時?
對象不能在 JavaScript 中設置為null
,但引用這些對象的變量或屬性可以。 如果該變量/屬性是唯一引用該對象的變量/屬性,則該對象有資格進行垃圾回收。 因此,雖然事件偵聽器本身不會被刪除,但在正常情況下,對象消失了,這並不重要(如果對象是唯一引用這些事件偵聽器的對象,那么它們也有資格獲得垃圾收集)。
有些事情可能會妨礙到對象的其他引用,或者在某些情況下或某些環境中,如果事件偵聽器具有對對象的引用,則這種循環關系可以使它們都保持在附近(瀏覽器中最近有一個錯誤圍繞這個和ResizeObserver
和IntersectionObserver
)。 但總的來說,它們都會消失(最終)。
當然,要絕對確定,請主動刪除偵聽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.