Reflect.hasField 对比 anon.field
Reflect.hasField vs anon.field
我正在为 API 编写一个验证库,我需要检查必填字段的匿名数据结构。直接引用字段 (if(anon.field)...
) 是否安全,或者这会导致静态目标出现问题吗? Reflect.hasField
和直接字段访问之间有速度差异吗?
两种检查的目的不同。如果该字段已经 定义 ,您可以执行 if (anon.field == null)
。因此,如果该字段不在结构中或不确定(例如,如果您在 typedef 中使用 @:optional
字段),您可能会遇到运行时错误。
这就是 Reflect.hasField
的用武之地;它将检查它是否确实被定义。所以如果一个结构有一个字段,你可以检查它上面的任何东西。
如果您的目标是 Javascript,则 Reflect.hasField
与 Object.hasOwnProperty
的作用相同。
Reflect Api docs: http://api.haxe.org/Reflect.html#hasField
我正在为 API 编写一个验证库,我需要检查必填字段的匿名数据结构。直接引用字段 (if(anon.field)...
) 是否安全,或者这会导致静态目标出现问题吗? Reflect.hasField
和直接字段访问之间有速度差异吗?
两种检查的目的不同。如果该字段已经 定义 ,您可以执行 if (anon.field == null)
。因此,如果该字段不在结构中或不确定(例如,如果您在 typedef 中使用 @:optional
字段),您可能会遇到运行时错误。
这就是 Reflect.hasField
的用武之地;它将检查它是否确实被定义。所以如果一个结构有一个字段,你可以检查它上面的任何东西。
如果您的目标是 Javascript,则 Reflect.hasField
与 Object.hasOwnProperty
的作用相同。
Reflect Api docs: http://api.haxe.org/Reflect.html#hasField