Object Types

    Everything that isn't a primitive type is an object type.

    Object types are mutable and passed to functions by reference (i.e. modifying the value within a function modifies the original).

    There are 3 extremely common built-in object types: Object, Array, and Function.

    Objects

    The class Object is the base class of all object types. Objects are associative arrays (a.k.a maps or dictionaries).

    Keys can only be strings (or symbols), although we can restrict the set of allowed keys (e.g. to numbers) using type annotations — non-string keys will be coerced to strings at runtime.

    Objects are used extensively throughout JavaScript, both in the standard library and implementation of OOP (classes, inheritance, etc).

    Arrays

    The Array class is a subclass of Object that handles integer keys specially.

    We use array literal syntax to declare arrays:

    Functions

    Functions are objects that can be called. They can assigned to variables and passed as arguments to other functions, just like any other value.

    There are two ways to declare functions:

    • The function keyword
    • Arrow (=>) function expressions

    Using objects

    Since all object types are subclasses of Object, even Array and Function values are associative arrays. This means we can assign arbitrary keys and values.

    However, we generally shouldn't use them like this it's not their intended purpose.

    There are some standard library methods and 3rd party frameworks that do this, so it's more a suggestion than a rule.