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