1234567891011121314151617181920212223242526272829303132 |
- import defaultValue from "./defaultValue.js";
- /**
- * Clones an object, returning a new object containing the same properties.
- *
- * @function
- *
- * @param {Object} object The object to clone.
- * @param {Boolean} [deep=false] If true, all properties will be deep cloned recursively.
- * @returns {Object} The cloned object.
- */
- function clone(object, deep) {
- if (object === null || typeof object !== "object") {
- return object;
- }
- deep = defaultValue(deep, false);
- const result = new object.constructor();
- for (const propertyName in object) {
- if (object.hasOwnProperty(propertyName)) {
- let value = object[propertyName];
- if (deep) {
- value = clone(value, deep);
- }
- result[propertyName] = value;
- }
- }
- return result;
- }
- export default clone;
|