如何在Haxe中克隆动态对象?

7

我有一个来自Json的动态对象,并需要在Haxe中进行克隆。 是否有简单的方法可以克隆该对象,请告知。 如果不可能,我至少想要像JavaScript对象一样迭代该动态对象。

var config = {
    loop : true,
    autoplay : true,
    path : "data.txt"
};
var newConfig = {};
for (i in config) {
    if (config.hasOwnProperty(i))
        newConfig[i] = config[i];
}
2个回答

10

使用Reflect.copy()

var newConfig = Reflect.copy(config);

请注意,它仅保证在匿名结构上起作用。对于其他对象,请使用适当的Reflect方法。


嗨,安迪,谢谢你的回答。顺便问一下,哪些类型的值不能保证呢?例如从Json解析出来的数据可以正常工作吗? - rener172846
1
haxe.Json解析的数据可以是null、number、string、array或匿名对象(与Haxe中的匿名结构相同)。如果你确定正在解析一个匿名对象,可以安全地使用Reflect.copy()。其他所有情况都不能保证工作正常,例如null、number、string、array、类实例、枚举实例等。 - Andy Li
是的,我已经测试过了,Reflect.copy的结果始终是匿名结构,即使源对象是数字、字符串或数组。 感谢您提供最佳解决方案和完美的经验。 - rener172846

2
var newConfig = Reflect.copy(config)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接