Traits are a more robust alternative to multiple inheritance and enable object
composition and reuse. traits.js is motivated by two goals: first, it is an
description format. By reusing this standard description format, traits.js can be
made more interoperable with similar libraries, and even with built-in primitives.
Second, traits.js makes it convenient to create "high-integrity" objects whose
integrity cannot be violated by clients, an important property in the context of
mash-ups composed from mutually suspicious scripts. We describe the design of
traits.js and provide an operational semantics for TRAITS-JS, a minimal calculus
that models the core functionality of the library.