class Reflect

Available on all platforms

The Reflect API is a way to manipulate values dynamicly through an abstract interface in an untyped manner. Use with care.

Class Fields

static function callMethod(o:Dynamic, func:Dynamic, args:Array<Dynamic>):Dynamic

Call a method with the given object and arguments.

static function compare<T>(a:T, b:T):Int

Compares a and b.


If `a` is less than `b`, the result is negative. If `b` is less than
`a`, the result is positive. If `a` and `b` are equal, the result is 0.

This function is only defined if `a` and `b` are of the same type.

If that type is a function, the result is unspecified and
`Reflect.compareMethods` should be used instead.

For all other types, the result is 0 if `a` and `b` are equal. If they
are not equal, the result depends on the type and is negative if:

- Numeric types: a is less than b
- String: a is lexicographically less than b
- Other: unspecified

If `a` and `b` are null, the result is 0. If only one of them is null,
the result is unspecified.

static function compareMethods(f1:Dynamic, f2:Dynamic):Bool

Compares the functions f1 and f2.


If `f1` or `f2` are not functions, the result is unspecified.

Otherwise the result is true if `f1` and the `f2` are physically equal,
false otherwise.

static function copy<T>(o:T):T

Copies the fields of structure o.


This is only guaranteed to work on anonymous structures.

If `o` is null, the result is unspecified.

static function deleteField(o:Dynamic, field:String):Bool

Removes the field named field from structure o.


This method is only guaranteed to work on anonymous structures.

If `o` or `field` are null, the result is unspecified.

static function field(o:Dynamic, field:String):Dynamic

Returns the value of the field named field on object o.


If `o` is not an object or has no field named `field`, the result is
null.

If the field is defined as a property, its accessors are ignored. Refer
to `Reflect.getProperty` for a function supporting property accessors.

If `field` is null, the result is unspecified.

(As3) If used on a property field, the getter will be invoked. It is
not possible to obtain the value directly.

static function fields(o:Dynamic):Array<String>

Returns the fields of structure o.


This method is only guaranteed to work on anonymous structures. Refer to
`Type.getInstanceFields` for a function supporting class instances.

If `o` is null, the result is unspecified.

static function getProperty(o:Dynamic, field:String):Dynamic

Returns the value of the field named field on object o, taking

property getter functions into account.

If the field is not a property, this function behaves like
`Reflect.field`, but might be slower.

If `o` or `field` are null, the result is unspecified.

static function hasField(o:Dynamic, field:String):Bool

Tells if structure o has a field named field.


This is only guaranteed to work for anonymous structures. Refer to
`Type.getInstanceFields` for a function supporting class instances.

If `o` or `field` are null, the result is unspecified.

static function isEnumValue(v:Dynamic):Bool

Tells if v is an enum value.


The result is true if `v` is of type EnumValue, i.e. an enum
constructor.

Otherwise, including if `v` is null, the result is false.

static function isFunction(f:Dynamic):Bool

Returns true if f is a function, false otherwise.


If `f` is null, the result is false.

static function isObject(v:Dynamic):Bool

Tells if v is an object.


The result is true if `v` is one of the following:

- class instance
- structure
- Class<T>
- Enum<T>

Otherwise, including if `v` is null, the result is false.

static function makeVarArgs(f:Array<Dynamic> ->Dynamic):Dynamic

static function makeVarArgs(f:Array<Dynamic> ->Void):Dynamic

Transform a function taking an array of arguments into a function that can

be called with any number of arguments.

static function setField(o:Dynamic, field:String, value:Dynamic):Void

Sets the field named field of object o to value value.


If `o` has no field named `field`, this function is only guaranteed to
work for anonymous structures.

If `o` or `field` are null, the result is unspecified.

(As3) If used on a property field, the setter will be invoked. It is
not possible to set the value directly.

static function setProperty(o:Dynamic, field:String, value:Dynamic):Void

Sets the field named field of object o to value value, taking

property setter functions into account.

If the field is not a property, this function behaves like
`Reflect.setField`, but might be slower.

If `field` is null, the result is unspecified.