Binding
Represents a relation between an injectable element and a binding context. The binding contain things such as the scope of a service or the value of the service. Whenever a service is requested, its binding is read to know what to inject and how to inject the service. Any binding has these properties:
| Property | Description | Type | 
|---|---|---|
| id | Service id. Any attempt to create a service matching this service id is going to use this binding. | number | string | symbol | 
| tags | Tags associated. Any attempt to create a service matching one of these tags is going to use this binding. | number | string | symbol | 
There are two kinds of bindings:
TypeBinding
A class based binding. A type binding relies on a class constructor to instantiate the service.
| Property | Description | Type | 
|---|---|---|
| scope | Binding scope to determine wheter or not a service should be reused. | BindingScope | 
| type | Class to be used to call its constructor | Newable | 
Binding scope
When the container creates an instance, it may reuse an existing instance instead if its scope allows it. These are the current scopes of a binding:
- Transient: An instance of this service is never reused.
 - Request: An instance of this service is reused if service is requested under the same 
Container.getrequest. 
Example: Given the services A, B and C, both A and B services depends on C. In addition, A services depends on B. If C is injected on request scope, a request to the A service results in the same C instance being injected to both A and B services.
- Singleton: An instance of this service is always reused.