0, 1, ∞
- Objects are the things we use to encapsulate data and behaviour by exposing methods (and optionally properties).
- Metaobjects like classes or prototypes are objects that define the behaviour of other objects.
- Protocols are the rules by which we figure out what exactly happens when we send a message to an object.
- Binding Times are the rules that determine when the behaviour of objects, metaobjects, and protocols can be added, removed, or changed.