pub struct JsClass(_);
Implementations
pub fn new<F, P, T, R, const N: usize>(
env: NapiEnv,
name: impl AsRef<str>,
func: F,
properties: P
) -> NapiResult<JsClass> where
T: NapiValueT,
R: NapiValueT,
F: FnMut(JsObject, [T; N]) -> NapiResult<R>,
P: AsRef<[NapiPropertyDescriptor]>,
pub fn new<F, P, T, R, const N: usize>(
env: NapiEnv,
name: impl AsRef<str>,
func: F,
properties: P
) -> NapiResult<JsClass> where
T: NapiValueT,
R: NapiValueT,
F: FnMut(JsObject, [T; N]) -> NapiResult<R>,
P: AsRef<[NapiPropertyDescriptor]>,
Defines a JavaScript class, including:
- A JavaScript constructor function that has the class name. When wrapping a corresponding C++ class, the callback passed via constructor can be used to instantiate a new C++ class instance, which can then be placed inside the JavaScript object instance being constructed using napi_wrap.
- Properties on the constructor function whose implementation can call corresponding static data properties, accessors, and methods of the C++ class (defined by property descriptors with the napi_static attribute).
- Properties on the constructor function’s prototype object. When wrapping a C++ class, non-static data properties, accessors, and methods of the C++ class can be called from the static functions given in the property descriptors without the napi_static attribute after retrieving the C++ class instance placed inside the JavaScript object instance by using napi_unwrap.
When wrapping a C++ class, the C++ constructor callback passed via constructor should be a static method on the class that calls the actual class constructor, then wraps the new C++ instance in a JavaScript object, and returns the wrapper object. See napi_wrap for details.
The JavaScript constructor function returned from napi_define_class is often saved and used later to construct new instances of the class from native code, and/or to check whether provided values are instances of the class. In that case, to prevent the function value from being garbage-collected, a strong persistent reference to it can be created using napi_create_reference, ensuring that the reference count is kept >= 1.
Any non-NULL data which is passed to this API via the data parameter or via the data field of the napi_property_descriptor array items can be associated with the resulting JavaScript constructor (which is returned in the result parameter) and freed whenever the class is garbage-collected by passing both the JavaScript function and the data to napi_add_finalizer.
This method is used to instantiate a new JavaScript value using a given napi_value that represents the constructor for the object.
Trait Implementations
construct value from raw pointer
napi_value type cast
This API implements the abstract operation ToBoolean() as defined in Section 7.1.2 of the ECMAScript Language Specification. Read more
This API implements the abstract operation ToNumber() as defined in Section 7.1.3 of the ECMAScript Language Specification. This function potentially runs JS code if the passed-in value is an object. Read more
This API implements the abstract operation ToObject() as defined in Section 7.1.13 of the ECMAScript Language Specification. Read more
This API implements the abstract operation ToString() as defined in Section 7.1.13 of the ECMAScript Language Specification. This function potentially runs JS code if the passed-in value is an object. Read more
This API represents invoking the instanceof Operator on the object as defined in Section 12.10.4 of the ECMAScript Language Specification. Read more
This API represents invoking the IsArray operation on the object as defined in Section 7.2.2 of the ECMAScript Language Specification. Read more
This API checks if the Object passed in is an array buffer.
This API checks if the Object passed in is a buffer.
This API checks if the Object passed in is a error.
This API checks if the Object passed in is a typed array.
This API checks if the Object passed in is a DataView.
This API represents the invocation of the Strict Equality algorithm as defined in Section 7.2.14 of the ECMAScript Language Specification. Read more
Returns napi_ok if the API succeeded. Read more
the raw-handle of current value
get null singleton
get undefined singleton
get global singleton
value is throwable
fn define_properties<P>(&self, properties: P) -> NapiResult<()> where
P: AsRef<[NapiPropertyDescriptor]>,
fn define_properties<P>(&self, properties: P) -> NapiResult<()> where
P: AsRef<[NapiPropertyDescriptor]>,
This method allows the efficient definition of multiple properties on a given object. The properties are defined using property descriptors (see napi_property_descriptor). Given an array of such property descriptors, this API will set the properties on the object one at a time, as defined by DefineOwnProperty() (described in Section 9.1.6 of the ECMA-262 specification). Read more
fn gc<Finalizer>(&mut self, finalizer: Finalizer) -> NapiResult<NapiRef> where
Finalizer: FnOnce(NapiEnv) -> NapiResult<()>,
fn gc<Finalizer>(&mut self, finalizer: Finalizer) -> NapiResult<NapiRef> where
Finalizer: FnOnce(NapiEnv) -> NapiResult<()>,
This is a hook which is fired when the value is gabage-collected. For napi >= 5, we use napi_add_finalizer, For napi < 5, we use napi_wrap. Read more
fn wrap<T, Finalizer>(
&mut self,
data: T,
finalizer: Finalizer
) -> NapiResult<NapiRef> where
Finalizer: FnOnce(NapiEnv, T) -> NapiResult<()>,
fn wrap<T, Finalizer>(
&mut self,
data: T,
finalizer: Finalizer
) -> NapiResult<NapiRef> where
Finalizer: FnOnce(NapiEnv, T) -> NapiResult<()>,
Wraps a native instance in a JavaScript object. The native instance can be retrieved later using napi_unwrap(). Read more
Retrieves a native instance that was previously wrapped in a JavaScript object using napi_wrap(). Read more
Retrieves a native instance that was previously wrapped in the JavaScript object js_object using napi_wrap() and removes the wrapping. If a finalize callback was associated with the wrapping, it will no longer be called when the JavaScript object becomes garbage-collected. Read more
Auto Trait Implementations
impl RefUnwindSafe for JsClass
impl UnwindSafe for JsClass
Blanket Implementations
Mutably borrows from an owned value. Read more