Function called to destruct object.
Usually such a function will nullify object values, allowing GC to collect them.
It might also free external hold resources, such as file descriptors, tcp connections etc.
After object has been destructed, it needs to be returned back.
Function which initializes object with new values (i.e. overwrites the object).
Function can do anything he want with object, such as removing properties, adding new ones, overwrite with new values etc.
After object has been initialized, it needs to be returned back.
Function which constructs the object when given a set of arguments.
After object has been created, it needs to be returned back.