napi_property_attributes
typedef enum {
napi_default = 0,
napi_writable = 1 << 0,
napi_enumerable = 1 << 1,
napi_configurable = 1 << 2,
// Used with napi_define_class to distinguish static properties
// from instance properties. Ignored by napi_define_properties.
napi_static = 1 << 10,
// Default for class methods.
napi_default_method = napi_writable | napi_configurable,
// Default for object properties, like in JS obj[prop].
napi_default_jsproperty = napi_writable |
napi_enumerable |
napi_configurable,
} napi_property_attributes; napi_property_attributes 是用于控制设置在 JavaScript 对象上的属性行为的位标志。除了 napi_static 之外,它们对应于 ECMAScript 语言规范 的 区段属性 中列出的属性。它们可以是以下一个或多个位标志:
napi_default:属性上没有设置显式属性。默认情况下,属性是只读的,不可枚举且不可配置。napi_writable:该属性是可写的。napi_enumerable:该属性是可枚举的。napi_configurable:该属性是可配置的,如 ECMAScript 语言规范 的 截面属性 中定义。napi_static:该属性将被定义为类的静态属性,而不是默认的实例属性。这仅由napi_define_class使用。napi_define_properties会忽略它。napi_default_method:像 JS 类中的方法一样,该属性是可配置和可写的,但不可枚举。napi_default_jsproperty:像在 JavaScript 中通过赋值设置的属性一样,该属性是可写的、可枚举的且可配置的。