我希望能够根据属性值的名称设置和获取属性值,而无需使用反射API。我正在做一些介于引擎之间的事情,动画化了数百个对象,调用函数Reflect.getProperty
和setProperty
花费了相当长的时间。
有没有一种方法可以绕过反射API,而不必在我的Haxe代码中注入原始javascript
呢?(因此它也可以在js以外的其他平台上使用)
因此,与其这样做:
finalValue = Reflect.getProperty(object, propertyName);
我希望能够做到这一点:
finalValue = object[propertyName];
谢谢。
发布于 2016-05-10 11:09:45
去untyped
怎么样?
// set
untyped object[propertyName] = 15;
// get
var value = untyped object[propertyName];
你自己试试吧:http://try.haxe.org/#5b61e
警告非类型化的允许您省略类型系统,并且更容易出错。如果使用带有Haxe属性的实例(getter/setters),可能会产生意想不到的结果。这就是为什么使用
Reflect
被认为更安全的原因。
发布于 2016-05-10 13:42:57
在对getter/setter和标准属性的属性使用"untyped“时,您需要小心,因为调用略有不同。例:
// set
untyped object["set_" + propertyName] = 15;
// get
var value = untyped object["get_" + propertyName];
通常情况下,当属性被映射时,我们所做的是预先检查属性,看看它是否是getter/setter,并将这些信息存储起来供运行时使用。
https://stackoverflow.com/questions/37135719
复制相似问题