当前位置: 首页 > article >正文

AWTK fscript 中的 object 扩展函数

fscript 是 AWTK 内置的脚本引擎,开发者可以在 UI XML 文件中直接嵌入 fscript 脚本,提高开发效率。本文介绍一下 fscript 中的 ** object 扩展函数 **

object 扩展函数

object 适用于 app_conf、typed_array 和 array 等各种对象。

1. object_create

创建缺省的 object 对象,可以当一个 map 使用。


原型
object_create() => object
示例
var a = object_create()

2. object_get

获取对象的属性。


可以通过 value_is_valid 来判断返回值是否有效。

原型
object_get(o, key) => value
object_get(o, key, defval) => value

也可以直接访问对象的属性:

print(o.key)
示例
print(object_get(a, "age"))
print(a.age)

3. object_set

设置对象的属性。


原型
object_set(obj, key, value) => bool
示例
object_set(a, "age", 123);

4. object_remove

删除对象的属性。


原型
object_remove(obj, key) => bool
示例
object_remove(a, "age")

5. object_ref

引用计数加1。


原型
object_ref(obj) => object
示例
object_ref(a)

5. object_unref

引用计数减1。引用计数为0时,销毁对象。


原型
object_unref(obj)
示例
object_ref(a)

6. object_forward_events

将源对象的事件转发目标对象。


目前支持以下事件的转发:

  • EVT_PROP_CHANGED:对象中的属性改变事件。
  • EVT_PROPS_CHANGED:对象中的属性改变事件。
  • EVT_ITEMS_CHANGED:集合对象中的项目改变事件
原型
object_forward_events(src_obj, dst_obj)
示例
global = object_create()
global.arr = array_create()
object_forward_events(global.arr, global)

完整示例

var a = object_create()
assert(!value_is_null(a))
assert(object_set(a, "age", 123))
assert(a.age ==  123)

assert(object_set(a, "name", "awtk"))
assert(a.name == "awtk")

assert(object_get(a, "age") == 123)
print(object_get(a, "age"))
assert(object_remove(a, "age"))
assert(!value_is_valid(object_get(a, "age")))
unset(a)

var person = object_create()
assert(!value_is_null(person))

assert(object_set(person, "age", 123))
assert(person.age ==  123)

assert(object_set(person, "name", "awtk"))
assert(person.name == "awtk")

var g = object_create()
g.arr = array_create()
object_forward_events(g.arr, g)

http://www.kler.cn/news/360894.html

相关文章:

  • 函数(c语言进阶)
  • YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
  • D45【python 接口自动化学习】- python基础之类
  • 水果忍者网页版(重制版)
  • 【Linux】Linux命令行与环境变量
  • docker配置镜像源
  • Java面试宝典-并发编程学习02
  • Android IP路由策略和防火墙
  • 什么是全局污染?怎么避免全局污染?
  • 基准线markLine的值超过坐标轴范围导致markline不显示
  • Go-知识依赖Vendor
  • 025 elasticsearch索引管理-Java原生客户端
  • 【MySQL】提高篇—索引与性能优化:索引的概念与类型(单列索引、复合索引、全文索引)
  • 手机功耗技术领域
  • Hadoop 踩坑汇总
  • Clip 模型实现文搜图
  • web网页QQ登录
  • 【JavaEE初阶】网络编程TCP协议实现回显服务器以及如何处理多个客户端的响应
  • rpm 命令
  • Java项目-基于springboot框架的逍遥大药房管理系统项目实战(附源码+文档)