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

See also:

### Static methods

`staticcompare<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.

`staticcompareMethods(f1:Dynamic, f2:Dynamic):Bool`

Compares the functions `f1`

and `f2`

.

If `f1`

or `f2`

are null, the result is false.
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.

If `f1`

or `f2`

are member method closures, the result is true if they
are closures of the same method on the same object value, false otherwise.

`staticcopy<T>(o:Null<T>):Null<T>`

Copies the fields of structure `o`

.

This is only guaranteed to work on anonymous structures.

If `o`

is null, the result is `null`

.

`staticfield(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.

`staticfields(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.

`staticgetProperty(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.

`statichasField(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.

`staticisEnumValue(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.

`staticisFunction(f:Dynamic):Bool`

Returns true if `f`

is a function, false otherwise.

If `f`

is null, the result is false.

`staticmakeVarArgs(f:Array<Dynamic> ‑> Dynamic):Dynamic`

`staticmakeVarArgs(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.

`staticsetProperty(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.