State is a JavaScript library for implementing first-class states on arbitrary owner objects.
A State
is a module of behavior — expressed as definitions of methods, data, and/or events — that can be exhibited by its owner. The State object model provides for hierarchical, compositional, and indirect prototypal relations between State
s, facilitating a variety of patterns for reuse and modularity.
An owner object exhibits the behavior expressed by its current state — method calls the owner receives are automatically dispatched to methods defined or inherited by that State
. Behavior of the owner is altered by executing transitions that carry its current state reference from one of its State
s to another.
Visit statejs.org for an introduction, with sample code, comprehensive documentation including a getting started guide and conceptual overview, API reference, and annotated source.