Javascript の循環参照

ある種の問題についてJavascript の循環参照の回避はかなり難しいように思う。

たとえば、システムが配下のオブジェクトのメソッドを呼び出すが、メソッド内でシステムのサービスを呼び出すような構造にしようとすると、システムは配下のオブジェクトの参照をどこかに持たなければならないし、オブジェクト側もシステムへの参照をなくすわけにもいかない。

 

システムの設計が悪いと言われればそうなのかもしれないが、

オブジェクトメンバにParentを持たせその親オブジェクトにChildを持たせるごく普通の構造の表現が循環参照になってしまう。これを回避しようといろいろ画策してみても、中間に管理オブジェクトが増えるだけで、つながり方が変わるだけで、循環は解消されない。

 

循環してはいけないという制度の方が実際のところ問題なんじゃないかと思う。

ボタンを押すたびに循環参照がどんどん増えるとかは問題になるのかもしれないが、ある程度の循環参照は致し方ないだろうと思う。