| # Reference (template) | |
| Holds a counted reference to a [`Napi::Value`](value.md) object; initially a weak reference unless otherwise specified, may be changed to/from a strong reference by adjusting the refcount. | |
| The referenced `Napi::Value` is not immediately destroyed when the reference count is zero; it is merely then eligible for garbage-collection if there are no other references to the `Napi::Value`. | |
| `Napi::Reference` objects allocated in static space, such as a global static instance, must call the `SuppressDestruct` method to prevent its destructor, running at program shutdown time, from attempting to reset the reference when the environment is no longer valid. Avoid using this if at all possible. | |
| The following classes inherit, either directly or indirectly, from `Napi::Reference`: | |
| * [`Napi::ObjectWrap`](object_wrap.md) | |
| * [`Napi::ObjectReference`](object_reference.md) | |
| * [`Napi::FunctionReference`](function_reference.md) | |
| ## Methods | |
| ### Factory Method | |
| ```cpp | |
| static Napi::Reference<T> Napi::Reference::New(const T& value, uint32_t initialRefcount = 0); | |
| ``` | |
| * `[in] value`: The value which is to be referenced. | |
| * `[in] initialRefcount`: The initial reference count. | |
| ### Empty Constructor | |
| ```cpp | |
| Napi::Reference::Reference(); | |
| ``` | |
| Creates a new _empty_ `Napi::Reference` instance. | |
| ### Constructor | |
| ```cpp | |
| Napi::Reference::Reference(napi_env env, napi_value value); | |
| ``` | |
| * `[in] env`: The `napi_env` environment in which to construct the `Napi::Reference` object. | |
| * `[in] value`: The Node-API primitive value to be held by the `Napi::Reference`. | |
| ### Env | |
| ```cpp | |
| Napi::Env Napi::Reference::Env() const; | |
| ``` | |
| Returns the `Napi::Env` value in which the `Napi::Reference` was instantiated. | |
| ### IsEmpty | |
| ```cpp | |
| bool Napi::Reference::IsEmpty() const; | |
| ``` | |
| Determines whether the value held by the `Napi::Reference` is empty. | |
| ### Value | |
| ```cpp | |
| T Napi::Reference::Value() const; | |
| ``` | |
| Returns the value held by the `Napi::Reference`. | |
| ### Ref | |
| ```cpp | |
| uint32_t Napi::Reference::Ref() const; | |
| ``` | |
| Increments the reference count for the `Napi::Reference` and returns the resulting reference count. Throws an error if the increment fails. | |
| ### Unref | |
| ```cpp | |
| uint32_t Napi::Reference::Unref() const; | |
| ``` | |
| Decrements the reference count for the `Napi::Reference` and returns the resulting reference count. Throws an error if the decrement fails. | |
| ### Reset (Empty) | |
| ```cpp | |
| void Napi::Reference::Reset(); | |
| ``` | |
| Sets the value held by the `Napi::Reference` to be empty. | |
| ### Reset | |
| ```cpp | |
| void Napi::Reference::Reset(const T& value, uint32_t refcount = 0); | |
| ``` | |
| * `[in] value`: The value which is to be referenced. | |
| * `[in] initialRefcount`: The initial reference count. | |
| Sets the value held by the `Napi::Reference`. | |
| ### SuppressDestruct | |
| ```cpp | |
| void Napi::Reference::SuppressDestruct(); | |
| ``` | |
| Call this method on a `Napi::Reference` that is declared as static data to prevent its destructor, running at program shutdown time, from attempting to reset the reference when the environment is no longer valid. | |
| Avoid using this if at all possible. If you do need to use static data, **MAKE SURE** to warn your users that your addon is **NOT** threadsafe. |