The Napi::Object
class corresponds to a JavaScript object. It is extended by the following node-addon-api classes that you may use when working with more specific types:
Napi::Value
which is extended byNapi::Array
Napi::ArrayBuffer
Napi::Buffer<T>
Napi::Function
Napi::TypedArray
.
This class provides a number of convenience methods, most of which are used to set or get properties on a JavaScript object. For example, Set() and Get().
#include <napi.h>
using namespace Napi;
Void Init(Env env) {
// Create a new instance
Object obj = Object::New(env);
// Assign values to properties
obj.Set("hello", "world");
obj.Set(uint32_t(42), "The Answer to Life, the Universe, and Everything");
obj.Set("Douglas Adams", true);
// Get properties
Value val1 = obj.Get("hello");
Value val2 = obj.Get(uint32_t(42));
Value val3 = obj.Get("Douglas Adams");
// Test if objects have properties.
bool obj1 = obj.Has("hello"); // true
bool obj2 = obj.Has("world"); // false
}
Napi::Object::Object();
Creates a new empty Object instance.
Napi::Object::Object(napi_env env, napi_value value);
-
[in] env
: Thenapi_env
environment in which to construct the Value object. -
[in] value
: The C++ primitive from which to instantiate the Value.value
may be any of:- bool
- Any integer type
- Any floating point type
- const char* (encoded using UTF-8, null-terminated)
- const char16_t* (encoded using UTF-16-LE, null-terminated)
- std::string (encoded using UTF-8)
- std::u16string
- Napi::Value
- napi_value
Creates a non-empty Napi::Object
instance.
Napi::Object Napi::Object::New(napi_env env);
[in] env
: Thenapi_env
environment in which to construct theNapi::Value
object.
Creates a new Napi::Object
value.
void Napi::Object::Set (____ key, ____ value);
[in] key
: The name for the property being assigned.[in] value
: The value being assigned to the property.
Add a property with the specified key with the specified value to the object.
The key can be any of the following types:
napi_value
Napi::Value
const char*
const std::string&
uint32_t
While the value must be any of the following types:
napi_value
Napi::Value
const char*
std::string&
bool
double
bool Napi::Object::Delete(____ key);
[in] key
: The name of the property to delete.
Deletes the property associated with the given key. Returns true
if the property was deleted.
The key
can be any of the following types:
napi_value
Napi::Value
const char *
const std::string &
uint32_t
Napi::Value Napi::Object::Get(____ key);
[in] key
: The name of the property to return the value for.
Returns the Napi::Value
associated with the key property. Returns the value undefined if the key does not exist.
The key
can be any of the following types:
napi_value
Napi::Value
const char *
const std::string &
uint32_t
bool Napi::Object::Has (____ key) const;
[in] key
: The name of the property to check.
Returns a bool
that is true if the object has a property named key
and false otherwise.
bool Napi::Object::InstanceOf (const Function& constructor) const
[in] constructor
: The constructorNapi::Function
of the value that is being compared with the object.
Returns a bool
that is true if the Napi::Object
is an instance created by the constructor
and false otherwise.
Note: This is equivalent to the JavaScript instanceof operator.
template <typename Finalizer, typename T>
inline void AddFinalizer(Finalizer finalizeCallback, T* data);
[in] finalizeCallback
: The function to call when the object is garbage-collected.[in] data
: The data to associate with the object.
Associates data
with the object, calling finalizeCallback
when the object is garbage-collected. finalizeCallback
has the signature
void finalizeCallback(Napi::Env env, T* data);
where data
is the pointer that was passed into the call to AddFinalizer()
.
template <typename Finalizer, typename T, typename Hint>
inline void AddFinalizer(Finalizer finalizeCallback,
T* data,
Hint* finalizeHint);
[in] data
: The data to associate with the object.[in] finalizeCallback
: The function to call when the object is garbage-collected.
Associates data
with the object, calling finalizeCallback
when the object is garbage-collected. An additional hint
may be given. It will also be passed to finalizeCallback
, which has the signature
void finalizeCallback(Napi::Env env, T* data, Hint* hint);
where data
and hint
are the pointers that were passed into the call to AddFinalizer()
.
Napi::Array Napi::Object::GetPropertyNames() const;
Returns the names of the enumerable properties of the object as a Napi::Array
of strings.
The properties whose key is a Symbol
will not be included.
bool Napi::Object::HasOwnProperty(____ key); const
[in] key
The name of the property to check.
Returns a bool
that is true if the object has an own property named key
and false otherwise.
The key can be any of the following types:
napi_value
Napi::Value
const char*
const std::string&
uint32_t
void Napi::Object::DefineProperty (const Napi::PropertyDescriptor& property);
[in] property
: ANapi::PropertyDescriptor
.
Define a property on the object.
void Napi::Object::DefineProperties (____ properties)
[in] properties
: A list ofNapi::PropertyDescriptor
. Can be one of the following types:- const std::initializer_listNapi::PropertyDescriptor&
- const std::vectorNapi::PropertyDescriptor&
Defines properties on the object.
Napi::PropertyLValue<std::string> Napi::Object::operator[] (const char* utf8name);
[in] utf8name
: UTF-8 encoded null-terminated property name.
Returns a Napi::PropertyLValue
as the named property or sets the named property.
Napi::PropertyLValue<std::string> Napi::Object::operator[] (const std::string& utf8name);
[in] utf8name
: UTF-8 encoded property name.
Returns a Napi::PropertyLValue
as the named property or sets the named property.
Napi::PropertyLValue<uint32_t> Napi::Object::operator[] (uint32_t index);
[in] index
: Element index.
Returns a Napi::PropertyLValue
or sets an indexed property or array element.
Napi::Value Napi::Object::operator[] (const char* utf8name) const;
[in] utf8name
: UTF-8 encoded null-terminated property name.
Returns the named property as a Napi::Value
.
Napi::Value Napi::Object::operator[] (const std::string& utf8name) const;
[in] utf8name
: UTF-8 encoded property name.
Returns the named property as a Napi::Value
.
Napi::Value Napi::Object::operator[] (uint32_t index) const;
[in] index
: Element index.
Returns an indexed property or array element as a Napi::Value
.