18c339a94Sopenharmony_ci# HandleScope
28c339a94Sopenharmony_ci
38c339a94Sopenharmony_ciThe HandleScope class is used to manage the lifetime of object handles
48c339a94Sopenharmony_ciwhich are created through the use of node-addon-api. These handles
58c339a94Sopenharmony_cikeep an object alive in the heap in order to ensure that the objects
68c339a94Sopenharmony_ciare not collected while native code is using them.
78c339a94Sopenharmony_ciA handle may be created when any new node-addon-api Value or one
88c339a94Sopenharmony_ciof its subclasses is created or returned. For more details refer to
98c339a94Sopenharmony_cithe section titled [Object lifetime management](object_lifetime_management.md).
108c339a94Sopenharmony_ci
118c339a94Sopenharmony_ci## Methods
128c339a94Sopenharmony_ci
138c339a94Sopenharmony_ci### Constructor
148c339a94Sopenharmony_ci
158c339a94Sopenharmony_ciCreates a new handle scope on the stack.
168c339a94Sopenharmony_ci
178c339a94Sopenharmony_ci```cpp
188c339a94Sopenharmony_ciNapi::HandleScope::HandleScope(Napi::Env env);
198c339a94Sopenharmony_ci```
208c339a94Sopenharmony_ci
218c339a94Sopenharmony_ci- `[in] env`: The environment in which to construct the `Napi::HandleScope` object.
228c339a94Sopenharmony_ci
238c339a94Sopenharmony_ciReturns a new `Napi::HandleScope`
248c339a94Sopenharmony_ci
258c339a94Sopenharmony_ci### Constructor
268c339a94Sopenharmony_ci
278c339a94Sopenharmony_ciCreates a new handle scope on the stack.
288c339a94Sopenharmony_ci
298c339a94Sopenharmony_ci```cpp
308c339a94Sopenharmony_ciNapi::HandleScope::HandleScope(Napi::Env env, Napi::HandleScope scope);
318c339a94Sopenharmony_ci```
328c339a94Sopenharmony_ci
338c339a94Sopenharmony_ci- `[in] env`: `Napi::Env` in which the scope passed in was created.
348c339a94Sopenharmony_ci- `[in] scope`: pre-existing `Napi::HandleScope`.
358c339a94Sopenharmony_ci
368c339a94Sopenharmony_ciReturns a new `Napi::HandleScope` instance which wraps the `napi_handle_scope`
378c339a94Sopenharmony_cihandle passed in.  This can be used to mix usage of the C Node-API
388c339a94Sopenharmony_ciand node-addon-api.
398c339a94Sopenharmony_ci
408c339a94Sopenharmony_ci```cpp
418c339a94Sopenharmony_cioperator Napi::HandleScope::napi_handle_scope() const
428c339a94Sopenharmony_ci```
438c339a94Sopenharmony_ci
448c339a94Sopenharmony_ciReturns the Node-API `napi_handle_scope` wrapped by the `Napi::EscapableHandleScope` object.
458c339a94Sopenharmony_ciThis can be used to mix usage of the C Node-API and node-addon-api by allowing
468c339a94Sopenharmony_cithe class to be used be converted to a `napi_handle_scope`.
478c339a94Sopenharmony_ci
488c339a94Sopenharmony_ci### Destructor
498c339a94Sopenharmony_ci```cpp
508c339a94Sopenharmony_ciNapi::HandleScope::~HandleScope();
518c339a94Sopenharmony_ci```
528c339a94Sopenharmony_ci
538c339a94Sopenharmony_ciDeletes the `Napi::HandleScope` instance and allows any objects/handles created
548c339a94Sopenharmony_ciin the scope to be collected by the garbage collector.  There is no
558c339a94Sopenharmony_ciguarantee as to when the garbage collector will do this.
568c339a94Sopenharmony_ci
578c339a94Sopenharmony_ci### Env
588c339a94Sopenharmony_ci
598c339a94Sopenharmony_ci```cpp
608c339a94Sopenharmony_ciNapi::Env Napi::HandleScope::Env() const;
618c339a94Sopenharmony_ci```
628c339a94Sopenharmony_ci
638c339a94Sopenharmony_ciReturns the `Napi::Env` associated with the `Napi::HandleScope`.
648c339a94Sopenharmony_ci
658c339a94Sopenharmony_ci## Example
668c339a94Sopenharmony_ci
678c339a94Sopenharmony_ci```cpp
688c339a94Sopenharmony_cifor (int i = 0; i < LOOP_MAX; i++) {
698c339a94Sopenharmony_ci  Napi::HandleScope scope(info.Env());
708c339a94Sopenharmony_ci  std::string name = std::string("inner-scope") + std::to_string(i);
718c339a94Sopenharmony_ci  Napi::Value newValue = Napi::String::New(info.Env(), name.c_str());
728c339a94Sopenharmony_ci  // do something with newValue
738c339a94Sopenharmony_ci};
748c339a94Sopenharmony_ci```
758c339a94Sopenharmony_ci
768c339a94Sopenharmony_ciFor more details refer to the section titled [Object lifetime
778c339a94Sopenharmony_cimanagement](object_lifetime_management.md).
78