为什么JavaScript中的循环引用不好?
循环引用是指两个独立的对象互相引用对方的情况。
在旧版浏览器中,循环引用会导致内存泄漏。随着垃圾回收算法的改进,现在可以很好地处理循环和循环依赖,这个问题不再是问题了。
然而,从纯粹的设计角度来看,循环引用仍然是不好的,是一种代码坏味道。循环引用意味着互相引用的两个对象耦合度很高,一个对象的更改可能也需要更改另一个对象。
避免循环引用
在JS中没有一种方法可以避免循环引用。这取决于用例和情况,在某些情况下也可能是必要的。我们可以举个例子来理解这一点
假设您有两个对象,Dog和Person。您希望能够只使用dog对象引用狗的主人,并使用person对象引用人的宠物。
let dog = new Dog(); let person = new Person(); // Creating a circular reference dog.owner = person person.pet = dog
在大多数情况下,您只需要访问一个对象并从中派生另一个对象。因此,您可以断开其中一个链接。如果不是,您可以使用映射来映射反向场景中的对象。但是,与其使用技巧,不如让循环引用存在。
广告