Javascript is a dynamic, loosely typed scripting language with C/Java-like syntax that uses prototypical inheritance rather than classes. It supports objects, arrays, functions, numbers, strings, booleans, null, and undefined data types. Class-like structures can be created using constructor functions and prototypes. Namespacing is important to avoid cluttering the global object. Well-designed widgets separate concerns into small stateful objects and maximize collection usage. JSON is commonly used for data interchange and is faster and less verbose than XML. Popular libraries include jQuery, Prototype, MooTools and YUI for components, widgets and page enhancement.