High-level, often just-in-time compiled, and multi-paradigm programming languageDynamic typing, prototype-based object-orientation programming languageA multi-paradigm language that supports event-driven, functional, and imperative programming stylesAll the above