deep copy object by recursion.