# 可枚举的多平台差异

参考可迭代与可枚举的平台差异

# 可枚举现状

UTS语言并没有对for..in进行特殊处理,所以开发者在UTS中使用for..in 语法时,会触发各个平台具体内置规则。可以运行,但执行效果与web 存在一定的差异。

下面我们列出了UTS内置对象对for..in的支持情况

类型 Web Android ios
Array 返回索引 返回数值 返回数值
Set 不可枚举 返回数值 返回数值
Map 不可枚举 返回键值对 返回键值对
String 返回索引 返回字符 返回字符
自定义type 返回属性名 返回属性名 返回属性名
UTSJSONObject 返回属性名 返回属性名 返回属性名

可迭代不同,UTS语言尚不支持对可枚举协议进行自定义。

# 使用建议

对于可枚举协议(for..in) 出于历史代码的兼容性原因,HBuilderX 4.41之后与之前版本保持一致,即 各平台的运行依然存在差异。

单从访问对象内部属性的角度。我们认为可迭代 是一种更现代化语法,建议开发者通过 for..of 来实现对对象内部属性的遍历。