Implementing XPCOM components in JavaScript
From MozillaZine Knowledge Base
About XPCOM
Mozilla applications are built from a collection of XPCOM (Cross-platform Component Object Model) objects. They are used to perform certain tasks or to get specific functionality. For example, there is a directory service component that can be used to access files on your file system. Components can be constructed using several programming languages, including: javascript, c++, and python. Mozilla then uses "interfaces" to describe what a component can do. The most basic interface nsISupports give components a way to expose what interfaces they implement.
- Benifits of XPCOM
- XPCOM objects can be used by any programming language mozilla supports.
- Objects implemented as XPCOM are global to an application, and are not dependent on the scope of any one window.
- Programming logic can be encapsulated within an object.
- XPCOM Drawbacks
- Objects must be accessed from their defined interfaces. Javascript shortcuts such as the global window object annot be accessed.
- The only exception to this rules, is if you set a magical property wrappedJSObject equal to your component, then the underlining javascript object can be accessed.
- It is easier to have memory leaks
- Objects must be accessed from their defined interfaces. Javascript shortcuts such as the global window object annot be accessed.