Instead of adding individual functions as observers and then having to cache them, you can simply add the *this* object as the observer. Then, since it's an object rather than a function, the observer service will treat it as an [nsIObserver](http://mxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserver.idl) and call its *observe()* method, which you can then implement as a function that itself calls *this.appUpdateObserver()*.

That's a common pattern in Mozilla code. Here's an example:

https://github.com/mozilla/mozilla-central/blob/cfe5af8799af86659d5f9926fac5572f1c083c3d/browser/metro/base/content/browser-ui.js#L558-L580