AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 2025年HarmonyOS应用开发者基础认证题库 题目详情
CB1C4E87ED800001614117901380121E
2025年HarmonyOS应用开发者基础认证题库
526
多选题

128【多选题】下列关于@Extend 说法正确的是

A
支持通用属性
B
可以定义在组件外
C
支持通用事件
D
支持使用参数

答案解析

正确答案:ABCD

解析:

该题考查对 ArkTS(或类似声明式 UI 框架,如 OpenHarmony/ArkUI 中)中 `@Extend` 装饰器的理解。需结合其语言规范与实际语义进行严谨分析。 **核心知识点解析:** `@Extend` 是 ArkTS 中用于扩展内置组件能力的装饰器,本质是为系统内置组件(如 `Text`、`Button` 等)批量添加自定义属性、事件和方法的语法糖机制。其设计目标是提升组件复用性与开发效率,避免重复编写相同逻辑。 逐项分析选项: **A:支持通用属性** ✓ 正确。 `@Extend` 允许为指定组件类型(如 `Text`)统一扩展属性。例如: ```ts @Extend Text function myFontColor(color: ResourceColor) { this.fontColor(color); } ``` 调用 `Text('Hello').myFontColor(Color.Red)` 即生效。所扩展的属性属于该组件类型的实例方法,可视为“通用属性”的封装形式(即所有该类型组件实例均可使用)。此处“通用属性”指面向该组件类型全体实例的可复用属性能力,并非指跨组件类型通用,符合框架定义。 **B:可以定义在组件外** ✓ 正确。 `@Extend` 是模块级装饰器,必须定义在组件类(如 `@Component`)外部,且通常位于独立文件或模块顶层作用域。它不依赖于任何组件实例或生命周期,其作用是对组件构造函数原型进行扩展。若定义在组件内部(如 `build()` 函数中或组件类体内),将导致语法错误或运行时异常。因此,规范要求且仅允许定义在组件外部。 **C:支持通用事件** ✓ 正确。 `@Extend` 可扩展事件处理能力。例如为 `Button` 统一添加防抖点击事件: ```ts @Extend Button function debounceClick(callback: () => void, delay: number = 300) { let timer: NodeJS.Timeout | undefined; this.onClick(() => { clearTimeout(timer); timer = setTimeout(callback, delay); }); } ``` 该扩展方法可被任意 `Button` 实例调用,实现事件行为的通用化封装。“通用事件”在此指针对某类组件统一增强的事件响应逻辑,而非原生事件列表之外新增事件类型,符合框架语义。 **D:支持使用参数** ✓ 正确。 `@Extend` 定义的函数可声明任意数量与类型的参数(包括必选、可选、默认参数),并在调用时传入。上述 A、C 选项中的示例均已体现参数传递。参数用于定制扩展行为(如颜色值、延时毫秒数等),是其实用性的关键支撑。 **结论:** ABCD 均符合 `@Extend` 的官方规范与实际能力,答案正确。 补充说明: - `@Extend` 的作用对象是组件类型(构造函数),而非具体实例; - 扩展的方法会挂载到对应组件原型链上,因此具有继承性与复用性; - 不同组件类型需分别定义 `@Extend`(如 `@Extend Text` 与 `@Extend Button` 相互隔离),不存在跨类型通用,但同一类型下所有实例均共享扩展能力——这正是“通用”的准确含义。

相关知识点:

@Extend说法正确选项全选

题目纠错
2025年HarmonyOS应用开发者基础认证题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码