8.0 KiB
Property Descriptor
A Napi::Object
can be assigned
properites via its DefineProperty
and DefineProperties
functions, which take PropertyDescrptor(s) as their parameters. The
Napi::PropertyDescriptor
can contain either values or
functions, which are then assigned to the Napi::Object
.
Note that a single instance of a Napi::PropertyDescriptor
class can only contain either one value, or at most two functions.
PropertyDescriptors can only be created through the class methods Accessor
, Function
, or Value
, each of which return a new static
instance of a Napi::PropertyDescriptor
.
Example
#include <napi.h>
using namespace Napi;
(const CallbackInfo& info) {
Value TestGetterreturn Boolean::New(info.Env(), testValue);
}
void TestSetter(const CallbackInfo& info) {
= info[0].As<Boolean>();
testValue }
(const CallbackInfo& info) {
Value TestFunctionreturn Boolean::New(info.Env(), true);
}
(Env env) {
Void Init// Create an object.
= Object::New(env);
Object obj
// Accessor
= PropertyDescriptor::Accessor(env,
PropertyDescriptor pd1 ,
obj"pd1",
);
TestGetter= PropertyDescriptor::Accessor(env,
PropertyDescriptor pd2 ,
obj"pd2",
,
TestGetter);
TestSetter// Function
= PropertyDescriptor::Function(env,
PropertyDescriptor pd3 "function",
);
TestFunction// Value
= Boolean::New(env, true);
Boolean true_bool =
PropertyDescriptor pd4 ::Value("boolean value",
PropertyDescriptor::Boolean::New(env, true),
Napi);
napi_writable
// Assign properties to the object.
.DefineProperties({pd1, pd2, pd3, pd4});
obj}
Methods
Constructor
::PropertyDescriptor::PropertyDescriptor (napi_property_descriptor desc); Napi
[in] desc
: A PropertyDescriptor that is needed in order to create another PropertyDescriptor.
Accessor
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (___ name,
,
Getter getter= napi_default,
napi_property_attributes attributes void *data = nullptr);
[in] name
: The name used for the getter function.[in] getter
: A getter function.[in] attributes
: Potential attributes for the getter function.[in] data
: A pointer to data of any type, default is a null pointer.
Returns a PropertyDescriptor that contains a function.
The name of the property can be any of the following types: -
const char*
- const std::string &
-
napi_value value
- Napi::Name
This signature is deprecated. It will result in a memory leak if used.
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (
::Env env,
Napi::Object object,
Napi,
___ name,
Getter getter= napi_default,
napi_property_attributes attributes void *data = nullptr);
[in] env
: The environemnt in which to create this accessor.[in] object
: The object on which the accessor will be defined.[in] name
: The name used for the getter function.[in] getter
: A getter function.[in] attributes
: Potential attributes for the getter function.[in] data
: A pointer to data of any type, default is a null pointer.
Returns a Napi::PropertyDescriptor
that contains a
Getter
accessor.
The name of the property can be any of the following types: -
const char*
- const std::string &
-
Napi::Name
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (___ name,
,
Getter getter,
Setter setter= napi_default,
napi_property_attributes attributes void *data = nullptr);
[in] name
: The name of the getter and setter function.[in] getter
: The getter function.[in] setter
: The setter function.[in] attributes
: Potential attributes for the getter function.[in] data
: A pointer to data of any type, default is a null pointer.
Returns a Napi::PropertyDescriptor
that contains a
Getter
and Setter
function.
The name of the property can be any of the following types: -
const char*
- const std::string &
-
napi_value value
- Napi::Name
This signature is deprecated. It will result in a memory leak if used.
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (
::Env env,
Napi::Object object,
Napi,
___ name,
Getter getter,
Setter setter= napi_default,
napi_property_attributes attributes void *data = nullptr);
[in] env
: The environemnt in which to create this accessor.[in] object
: The object on which the accessor will be defined.[in] name
: The name of the getter and setter function.[in] getter
: The getter function.[in] setter
: The setter function.[in] attributes
: Potential attributes for the getter function.[in] data
: A pointer to data of any type, default is a null pointer.
Returns a Napi::PropertyDescriptor
that contains a
Getter
and Setter
function.
The name of the property can be any of the following types: -
const char*
- const std::string &
-
Napi::Name
Function
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Function (___ name,
,
Callable cb= napi_default,
napi_property_attributes attributes void *data = nullptr);
[in] name
: The name of the Callable function.[in] cb
: The function[in] attributes
: Potential attributes for the getter function.[in] data
: A pointer to data of any type, default is a null pointer.
Returns a Napi::PropertyDescriptor
that contains a
callable Napi::Function
.
The name of the property can be any of the following types: -
const char*
- const std::string &
-
napi_value value
- Napi::Name
This signature is deprecated. It will result in a memory leak if used.
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Function (
::Env env,
Napi,
___ name,
Callable cb= napi_default,
napi_property_attributes attributes void *data = nullptr);
[in] env
: The environment in which to create this accessor.[in] name
: The name of the Callable function.[in] cb
: The function[in] attributes
: Potential attributes for the getter function.[in] data
: A pointer to data of any type, default is a null pointer.
Returns a Napi::PropertyDescriptor
that contains a
callable Napi::Function
.
The name of the property can be any of the following types: -
const char*
- const std::string &
-
Napi::Name
Value
static Napi::PropertyDescriptor Napi::PropertyDescriptor::Value (___ name,
,
napi_value value= napi_default); napi_property_attributes attributes
The name of the property can be any of the following types: -
const char*
- const std::string &
-
napi_value value
- Napi::Name
Related Information
napi_property_attributes
napi_property_attributes
are flags used to indicate to
JavaScript certain permissions that the property is meant to have. The
following are the flag options: - napi_default, - napi_writable, -
napi_enumerable, - napi_configurable For more information on the flags
and on napi_property_attributes, please read the documentation here.