Abstract Data Types for JavaScript