napi_new_instance


napi_status napi_new_instance(napi_env env,
                              napi_value cons,
                              size_t argc,
                              napi_value* argv,
                              napi_value* result) 
  • [in] env:调用该 API 时所处的环境。
  • [in] cons:表示要作为构造函数调用的 JavaScript 函数的 napi_value
  • [in] argcargv 数组中元素的数量。
  • [in] argv:作为 napi_value 的 JavaScript 值数组,表示构造函数的参数。如果 argc 为零,则可以通过传入 NULL 来省略此参数。
  • [out] result:表示返回的 JavaScript 对象的 napi_value,在本例中是构造的对象。

此方法用于使用给定的 napi_value(表示对象的构造函数)来实例化一个新的 JavaScript 值。例如,请考虑以下代码片段:

【This method is used to instantiate a new JavaScript value using a given napi_value that represents the constructor for the object. For example, consider the following snippet:】

function MyObject(param) {
  this.param = param;
}

const arg = 'hello';
const value = new MyObject(arg); 

可以使用以下代码片段在 Node-API 中近似计算以下内容:

【The following can be approximated in Node-API using the following snippet:】

// Get the constructor function MyObject
napi_value global, constructor, arg, value;
napi_status status = napi_get_global(env, &global);
if (status != napi_ok) return;

status = napi_get_named_property(env, global, "MyObject", &constructor);
if (status != napi_ok) return;

// const arg = "hello"
status = napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &arg);
if (status != napi_ok) return;

napi_value* argv = &arg;
size_t argc = 1;

// const value = new MyObject(arg)
status = napi_new_instance(env, constructor, argc, argv, &value); 

如果 API 成功,则返回 napi_ok

【Returns napi_ok if the API succeeded.】