Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

자바스크립트 순환 참조의 예

<시간/>

두 개의 개별 개체가 서로에 대한 참조를 전달하면 순환 참조가 발생합니다.

이전 브라우저에서는 순환 참조가 메모리 누수의 원인이었습니다. 이제 주기 및 순환 종속성을 잘 처리할 수 있는 가비지 수집 알고리즘이 개선되어 더 이상 문제가 되지 않습니다.

그러나 순수한 디자인 관점에서 순환 참조는 여전히 나쁜 것이고 코드 냄새가 납니다. 순환 참조는 서로를 참조하는 2개의 객체가 밀접하게 결합되어 있으며 한 객체에 대한 변경 사항이 다른 객체에도 변경이 필요할 수 있음을 의미합니다.

Dog와 Person이라는 2개의 객체가 있다고 가정합니다. 개 개체를 사용하여 개의 소유자를 참조하고 사람 개체를 사용하여 사람의 애완 동물을 참조할 수 있기를 원합니다.

let dog = new Dog();
let person = new Person();
// Creating a circular reference
dog.owner = person
person.pet = dog

대부분의 시나리오에서 하나의 개체에만 액세스하고 다른 개체를 파생해야 합니다. 링크 중 하나를 끊을 수 있습니다. 그렇지 않은 경우 지도를 사용하여 반대 시나리오에서 객체를 매핑할 수 있습니다. 그러나 핵을 사용하는 대신 순환 참조를 거기에 두는 것이 좋습니다.