Component system for JavaScript (ECMA 5)