OOjs

OOjs (short for "Object-oriented JavaScript") is a JavaScript library for working with objects. Key features include inheritance, mixins and additional utilities for working with objects and arrays.

Features
It implements an EventEmitter mixin for event-driven programming, and a Factory pattern for decoupling consumers of functionality from any particular class's implementation.