OOjs

From mediawiki.org

OOjs (short for "Object-oriented JavaScript") is a JavaScript library for working with objects. Features include inheritance , mixins , static inheritance and additional utilities for working with objects and arrays. It also provides an EventEmitter mixin for event-driven programming, and a factory pattern for decoupling consumers of functionality from any particular class's implementation.

Features[edit source]

Inheritance [edit source]

OO.inheritClass( childClass, parentClass )

Extend prototype and static methods and properties of child constructor from a parent constructor.

OO.mixinClass( childClass, parentClass )

Copy prototype and static methods and properties to a child constructor from a parent constructor.

OO.initClass( baseClass )

Initialize a base class to be inherited by, or mixed into, a child class. Only required for classes that do not inherit or mixin other classes.

Events [edit source]

OO.EventEmitter

Allow event handlers to be attached, called when events occur, and detached.

Registries and Factories [edit source]

OO.Registry

Provide a simple map interface for associating arbitrary data with a symbolic name.

OO.Factory

Registry of classes with instantiation abstraction.

Utilities[edit source]

See the API documentation for a complete reference of available utilities.

Compatibility[edit source]

OOjs is optimised for modern ECMAScript 5 environments. The source code is compatible with the older ECMAScript 3 engine (such as in older versions of Internet Explorer, broadly speaking IE8 and before), but users need a polyfill to provide required ECMAScript 5 methods.

It is packaged to be run in either Web browsers or Node.js.

While not dependent on jQuery, there is an optimized package that makes use of jQuery features, resulting in a smaller file being sent to the client.

Namespace[edit source]

In the presence of a module system, such as in Node.js, OOjs exports all of its classes and methods. In other environments, such as Web browsers, a global variable is created named OO. You may access OO the same way you would access jQuery or mediaWiki.

If you are using JSHint, you should add the following to your .jshintrc file.

"predef": [
    "OO"
]

See also[edit source]

External links[edit source]