为什么JavaScript中的循环引用不好?


循环引用是指两个独立的对象互相引用对方的情况。

在旧版浏览器中,循环引用会导致内存泄漏。随着垃圾回收算法的改进,现在可以很好地处理循环和循环依赖,这个问题不再是问题了。

然而,从纯粹的设计角度来看,循环引用仍然是不好的,是一种代码坏味道。循环引用意味着互相引用的两个对象耦合度很高,一个对象的更改可能也需要更改另一个对象。

避免循环引用

在JS中没有一种方法可以避免循环引用。这取决于用例和情况,在某些情况下也可能是必要的。我们可以举个例子来理解这一点

假设您有两个对象,Dog和Person。您希望能够只使用dog对象引用狗的主人,并使用person对象引用人的宠物。

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

在大多数情况下,您只需要访问一个对象并从中派生另一个对象。因此,您可以断开其中一个链接。如果不是,您可以使用映射来映射反向场景中的对象。但是,与其使用技巧,不如让循环引用存在。

更新于:2019年9月17日

浏览量 1K+

启动您的职业生涯

完成课程后获得认证

开始学习
广告