| # EscapableHandleScope | |
| The `Napi::EscapableHandleScope` class is used to manage the lifetime of object handles | |
| which are created through the use of node-addon-api. These handles | |
| keep an object alive in the heap in order to ensure that the objects | |
| are not collected by the garbage collector while native code is using them. | |
| A handle may be created when any new node-addon-api Value or one | |
| of its subclasses is created or returned. | |
| The `Napi::EscapableHandleScope` is a special type of `Napi::HandleScope` | |
| which allows a single handle to be "promoted" to an outer scope. | |
| For more details refer to the section titled | |
| [Object lifetime management](object_lifetime_management.md). | |
| ## Methods | |
| ### Constructor | |
| Creates a new escapable handle scope. | |
| ```cpp | |
| Napi::EscapableHandleScope Napi::EscapableHandleScope::New(Napi::Env env); | |
| ``` | |
| - `[in] Env`: The environment in which to construct the `Napi::EscapableHandleScope` object. | |
| Returns a new `Napi::EscapableHandleScope` | |
| ### Constructor | |
| Creates a new escapable handle scope. | |
| ```cpp | |
| Napi::EscapableHandleScope Napi::EscapableHandleScope::New(napi_env env, napi_handle_scope scope); | |
| ``` | |
| - `[in] env`: `napi_env` in which the scope passed in was created. | |
| - `[in] scope`: pre-existing `napi_handle_scope`. | |
| Returns a new `Napi::EscapableHandleScope` instance which wraps the | |
| `napi_escapable_handle_scope` handle passed in. This can be used | |
| to mix usage of the C Node-API and node-addon-api. | |
| ```cpp | |
| operator Napi::EscapableHandleScope::napi_escapable_handle_scope() const | |
| ``` | |
| Returns the Node-API `napi_escapable_handle_scope` wrapped by the `Napi::EscapableHandleScope` object. | |
| This can be used to mix usage of the C Node-API and node-addon-api by allowing | |
| the class to be used be converted to a `napi_escapable_handle_scope`. | |
| ### Destructor | |
| ```cpp | |
| Napi::EscapableHandleScope::~EscapableHandleScope(); | |
| ``` | |
| Deletes the `Napi::EscapableHandleScope` instance and allows any objects/handles created | |
| in the scope to be collected by the garbage collector. There is no | |
| guarantee as to when the garbage collector will do this. | |
| ### Escape | |
| ```cpp | |
| napi::Value Napi::EscapableHandleScope::Escape(napi_value escapee); | |
| ``` | |
| - `[in] escapee`: `Napi::Value` or `napi_env` to promote to the outer scope | |
| Returns `Napi::Value` which can be used in the outer scope. This method can | |
| be called at most once on a given `Napi::EscapableHandleScope`. If it is called | |
| more than once an exception will be thrown. | |
| ### Env | |
| ```cpp | |
| Napi::Env Napi::EscapableHandleScope::Env() const; | |
| ``` | |
| Returns the `Napi::Env` associated with the `Napi::EscapableHandleScope`. |