If the value is null or undefined, it creates and returns an empty object.
If the value is an object already, it returns the value.
Otherwise, it returns an object of a type that corresponds to the given value. For example, passing a BigInt primitive returns a BigInt wrapper object