@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
24 lines (23 loc) • 724 B
text/typescript
/**
* ```js
* import { shallowClone } from '~/utils/shallowClone'
* const newObj = shallowClone(obj)
* ```
*
* Clone an object with same prototype and properties
*
* @param obj the object to clone
* @returns new object with same prototype and properties
*
* @category utility
* @private
*/
export function shallowClone(source: object, target: object) {
return Object.create(
Object.getPrototypeOf(source), // Use the prototype of the source object
{
...Object.getOwnPropertyDescriptors(source), // Copy all descriptors (methods, properties) from the source
...Object.getOwnPropertyDescriptors(target), // Merge/override with descriptors (getters, properties) from the target
},
);
}