Removing weak references is questionable in some of those cases. We're not in an environment fully controlled by cycle collector, those objects are exposed as regular COM objects. Even making cycle collector aware of JS objects will not change that. I think it's fine for some simple cases like constructors, for which it's unlikely to matter. But things like parent window reference would need a strong argument to change, IMHO.