鸿蒙5.0开发进阶:NDK开发-使用Node-API接口设置ArkTS对象的属性

往期鸿蒙全套实战文章必看:


简介

使用Node-API接口获取和设置ArkTS对象的属性。通过合理使用这些函数,实现更复杂的功能和逻辑。

基本概念

在ArkTS对象属性的相关开发中,需要处理ArkTS对象属性,确保正确地访问、设置、删除属性,并了解属性的继承关系和枚举特性。以下是一些关键概念:

  • 对象(Object):在ArkTS中,对象是一种复合数据类型,它允许存储多个不同类型的值作为一个单独的实体。对象是属性和方法的集合。属性是与对象相关联的值,而方法则是对象可以执行的操作。
  • 属性(Property):在ArkTS中,属性是对象特征的键值对。每个属性都有一个名字(也称为键或标识符)和一个值。属性的值可以是任意数据类型,包括基本类型、对象和函数。
  • 可枚举属性(EnumerableProperty):在ArkTS中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的,即内部 “可枚举” 标志设置为true或false。可枚举性决定了这个属性能否被 for...in 查找遍历到。
  • 自有属性(OwnProperty):自有属性直接定义在对象上的属性,而不是从原型链上继承来的属性。

场景和功能介绍

以下Node-API接口提供了对ArkTS对象属性的基本操作,包括设置、获取、删除和检查属性是否存在。使用场景如下:

接口 描述
napi_get_property_names 在进行对象操作或调试时,有时需要获取对象的属性和属性名。此接口可以帮助提取对象的属性名,用于动态获取对象的属性信息的场景。
napi_set_property 通过此接口可以动态地向对象添加属性。也可修改对象的属性值,满足动态属性值变更的需求。
napi_get_property 在调用Node-API模块的函数或方法时,可能需要将ArkTS对象的属性值作为参数传递。通过此接口可以获取属性值,并将其传递给其他函数进行处理。
napi_has_property 在进行属性访问之前,通常需要先检查对象中是否存在指定的属性。通过调用此接口可以判断给定对象是否包含特定的属性,从而避免访问不存在属性导致的异常或错误。
napi_delete_property 在需要删除一个ArkTS对象上的某个属性时,可以使用这个函数。
napi_has_own_property 在需要检查一个ArkTS对象是否直接拥有(而不是从其原型链上继承)某个属性时,可以使用这个函数。
napi_set_named_property 在需要将一个值赋给ArkTS对象的命名属性时,可以使用这个函数。
napi_get_named_property 在需要从ArkTS对象中获取一个命名属性的值时,可以使用这个函数。
napi_has_named_property 在需要检查一个ArkTS对象是否包含某个命名属性时,可以使用这个函数。
napi_define_properties 当需要在指定Object中自定义属性,并从ArkTS中访问和操作这些属性时,可以使用这个函数。
napi_get_all_property_names 当需要遍历一个对象的所有属性,并对其进行处理时,可以使用此接口获取所有属性名称的数组,然后检查数组中是否包含特定的属性名。

使用示例

本文仅对接口对应C++及ArkTS相关代码进行展示。

napi_get_property_names

以字符串数组的形式获取对象的可枚举属性的名称。

cpp部分代码

#include "napi/native_api.h"

static napi_value GetPropertyNames(napi_env env, napi_callback_info info)
{
    // 解析ArkTS的传参
    size_t argc = 1;
    napi_value args[1] = {nullptr};
    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
    // 以字符串数组的形式获取对象的可枚举属性的名称,以result传出
    napi_value result;
    napi_status status = napi_get_property_names(env, args[0], &result);
    if (status != napi_ok)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值