---
lang: en
title: 'API docs: context.context'
keywords: LoopBack 4.0, LoopBack 4
sidebar: lb4_sidebar
permalink: /doc/en/lb4/apidocs.context.context.html
---

<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [@loopback/context](./context.md) &gt; [Context](./context.context.md)

## Context class

Context provides an implementation of Inversion of Control (IoC) container

<b>Signature:</b>

```typescript
export declare class Context extends EventEmitter 
```

## Constructors

|  Constructor | Modifiers | Description |
|  --- | --- | --- |
|  [(constructor)(\_parent, name)](./context.context.(constructor).md) |  | Create a new context. |

## Properties

|  Property | Modifiers | Type | Description |
|  --- | --- | --- | --- |
|  [\_parent](./context.context._parent.md) |  | <code>Context</code> | Parent context |
|  [\_parentEventListeners](./context.context._parenteventlisteners.md) |  | <code>Map&lt;string, (...args: any[]) =&gt; void&gt; &#124; undefined</code> | Event listeners for parent context keyed by event names. It keeps track of listeners from this context against its parent so that we can remove these listeners when this context is closed. |
|  [configResolver](./context.context.configresolver.md) |  | <code>ConfigurationResolver</code> |  |
|  [name](./context.context.name.md) |  | <code>string</code> | Name of the context |
|  [observers](./context.context.observers.md) |  | <code>Set&lt;ContextEventObserver&gt; &#124; undefined</code> | A list of registered context observers. The Set will be created when the first observer is added. |
|  [registry](./context.context.registry.md) |  | <code>Map&lt;string, Binding&gt;</code> | Key to binding map as the internal registry |

## Methods

|  Method | Modifiers | Description |
|  --- | --- | --- |
|  [\_mergeWithParent(childList, parentList)](./context.context._mergewithparent.md) |  |  |
|  [add(binding)](./context.context.add.md) |  | Add a binding to the context. If a locked binding already exists with the same key, an error will be thrown. |
|  [bind(key)](./context.context.bind.md) |  | Create a binding with the given key in the context. If a locked binding already exists with the same key, an error will be thrown. |
|  [close()](./context.context.close.md) |  | Close the context: clear observers, stop notifications, and remove event listeners from its parent context. |
|  [configure(key)](./context.context.configure.md) |  | Create a corresponding binding for configuration of the target bound by the given key in the context.<!-- -->For example, <code>ctx.configure('controllers.MyController').to({x: 1})</code> will create binding <code>controllers.MyController:$config</code> with value <code>{x: 1}</code>. |
|  [contains(key)](./context.context.contains.md) |  | Check if a binding exists with the given key in the local context without delegating to the parent context |
|  [createView(filter, comparator)](./context.context.createview.md) |  | Create a view of the context chain with the given binding filter |
|  [find(pattern)](./context.context.find.md) |  | Find bindings using a key pattern or filter function |
|  [findByTag(tagFilter)](./context.context.findbytag.md) |  | Find bindings using the tag filter. If the filter matches one of the binding tags, the binding is included. |
|  [findOrCreateBinding(key, policy)](./context.context.findorcreatebinding.md) |  | Find or create a binding for the given key |
|  [get(keyWithPath, session)](./context.context.get.md) |  | Get the value bound to the given key, throw an error when no value is bound for the given key. |
|  [get(keyWithPath, options)](./context.context.get_1.md) |  | Get the value bound to the given key, optionally return a (deep) property of the bound value. |
|  [getBinding(key)](./context.context.getbinding.md) |  | Look up a binding by key in the context and its ancestors. If no matching binding is found, an error will be thrown. |
|  [getBinding(key, options)](./context.context.getbinding_1.md) |  | Look up a binding by key in the context and its ancestors. If no matching binding is found and <code>options.optional</code> is not set to true, an error will be thrown. |
|  [getConfig(key, configPath, resolutionOptions)](./context.context.getconfig.md) |  | Resolve configuration for the binding by key |
|  [getConfigAsValueOrPromise(key, configPath, resolutionOptions)](./context.context.getconfigasvalueorpromise.md) |  | Get the value or promise of configuration for a given binding by key |
|  [getConfigSync(key, configPath, resolutionOptions)](./context.context.getconfigsync.md) |  | Resolve configuration synchronously for the binding by key |
|  [getOwnerContext(key)](./context.context.getownercontext.md) |  | Get the owning context for a binding key |
|  [getSync(keyWithPath, session)](./context.context.getsync.md) |  | Get the synchronous value bound to the given key, optionally return a (deep) property of the bound value.<!-- -->This method throws an error if the bound value requires async computation (returns a promise). You should never rely on sync bindings in production code. |
|  [getSync(keyWithPath, options)](./context.context.getsync_1.md) |  | Get the synchronous value bound to the given key, optionally return a (deep) property of the bound value.<!-- -->This method throws an error if the bound value requires async computation (returns a promise). You should never rely on sync bindings in production code. |
|  [isBound(key)](./context.context.isbound.md) |  | Check if a key is bound in the context or its ancestors |
|  [isSubscribed(observer)](./context.context.issubscribed.md) |  | Check if an observer is subscribed to this context |
|  [notifyObservers(eventType, binding, context, observers)](./context.context.notifyobservers.md) |  | Publish an event to the registered observers. Please note the notification is queued and performed asynchronously so that we allow fluent APIs such as <code>ctx.bind('key').to(...).tag(...);</code> and give observers the fully populated binding. |
|  [setupConfigurationResolverIfNeeded()](./context.context.setupconfigurationresolverifneeded.md) |  | Set up the configuration resolver if needed |
|  [subscribe(observer)](./context.context.subscribe.md) |  | Add a context event observer to the context |
|  [toJSON()](./context.context.tojson.md) |  | Create a plain JSON object for the context |
|  [unbind(key)](./context.context.unbind.md) |  | Unbind a binding from the context. No parent contexts will be checked. |
|  [unsubscribe(observer)](./context.context.unsubscribe.md) |  | Remove the context event observer from the context |
|  [waitUntilPendingNotificationsDone(timeout)](./context.context.waituntilpendingnotificationsdone.md) |  | Wait until observers are notified for all of currently pending notification events.<!-- -->This method is for test only to perform assertions after observers are notified for relevant events. |


