首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >:使用名称获取和设置属性,而不使用反射

:使用名称获取和设置属性,而不使用反射
EN

Stack Overflow用户
提问于 2016-05-10 10:23:15
回答 2查看 251关注 0票数 2

我希望能够根据属性值的名称设置和获取属性值,而无需使用反射API。我正在做一些介于引擎之间的事情,动画化了数百个对象,调用函数Reflect.getPropertysetProperty花费了相当长的时间。

有没有一种方法可以绕过反射API,而不必在我的Haxe代码中注入原始javascript呢?(因此它也可以在js以外的其他平台上使用)

因此,与其这样做:

代码语言:javascript
运行
复制
finalValue = Reflect.getProperty(object, propertyName);

我希望能够做到这一点:

代码语言:javascript
运行
复制
finalValue = object[propertyName];

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-10 11:09:45

untyped怎么样?

代码语言:javascript
运行
复制
    // set
    untyped object[propertyName] = 15;

    // get
    var value = untyped object[propertyName];

你自己试试吧:http://try.haxe.org/#5b61e

警告非类型化的允许您省略类型系统,并且更容易出错。如果使用带有Haxe属性的实例(getter/setters),可能会产生意想不到的结果。这就是为什么使用Reflect被认为更安全的原因。

票数 1
EN

Stack Overflow用户

发布于 2016-05-10 13:42:57

在对getter/setter和标准属性的属性使用"untyped“时,您需要小心,因为调用略有不同。例:

代码语言:javascript
运行
复制
// set
untyped object["set_" + propertyName] = 15;

// get
var value = untyped object["get_" + propertyName];

通常情况下,当属性被映射时,我们所做的是预先检查属性,看看它是否是getter/setter,并将这些信息存储起来供运行时使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37135719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档