- Objects in JavaScript store key-value pairs and can contain nested objects and functions. Functions stored as object properties are called methods. - The this keyword refers to the object a method is called on. Functions can be declared, assigned to variables as expressions, or used as constructor functions with new. - Scopes in JavaScript are determined lexically at compile time. Variables are stored in execution contexts and functions form closures by maintaining references to outer scopes even after execution leaves them. - JavaScript uses prototypal inheritance where objects inherit directly from other objects via the internal [[Prototype]] property. The prototype is used to lookup properties not found on the object itself.