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