# JavaScript Object
#### Terms
- `Constructor function`
: A JavaScript function that creates an object through the new operator and creates and initializes properties and methods
- `Prototype`
- A property of the constructor function
- The place where properties and methods that are identically inherited by objects created by the constructor function are defined
- `Private member`
: A property or method that cannot be modified from outside the object
### JavaScript Object
- All data types except Primitive data types are Objects
- `Primitive Types`
- **number**
- **string**
- **boolean**
- **null**
: no value
- **undefined**
: a declared variable, but hasn't been given a value
- **symbol**
: a unique value that's not equal to any other value
- Functions are also objects
### Object Creation
#### Object
: A collection of properties
#### Object Creation
- When using an object literal, the object is created by listing its properties
- Empty object
: Used because properties can be easily added when creating functions with the literal method
- `namespace`
: Minimizes the use of global variables by converting variables and functions into object properties
- Objects are created using the new operator and constructor functions
#### Constructor Functions and prototype
- `this`
: Used in methods and refers to the calling object that invoked the method
- `Constructor function`
- A function that defines what properties an object to be created will have and how those properties will be initialized
- Similar to classes in typical object-oriented languages
- `prototype`
- Means that the properties of an object are not copied to the created object but are referenced
- If the prototype object of the constructor function is modified, the properties of objects created by this constructor function are changed!