obj = eval(uneval(o)); being used, but that's non-standard and only supported by Firefox.
I've done things like
obj = JSON.parse(JSON.stringify(o)); but question the efficiency.
I've also seen recursive copying functions with various flaws.
I'm surprised no canonical solution exists.