Google Research

Robust Trait Composition for JavaScript

  • Tom Van Cutsem
  • Mark S. Miller
Science of Computer Programming: Special Issue on Advances in Dynamic Languages (2012)


We introduce traits.js, a small, portable trait composition library for Javascript. 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 experiment in using and extending Javascript's recently added meta-level object 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.

Learn more about how we do research

We maintain a portfolio of research projects, providing individuals and teams the freedom to emphasize specific types of work