ES6's Object.assign()
function can be used to copy all of the enumerable properties from an existing Object
instance to a new one.
const existing = { a: 1, b: 2, c: 3 };
const clone = Object.assign({}, existing);
This includes Symbol
properties in addition to String
ones.
Object rest/spread destructuring which is currently a stage 3 proposal provides an even simpler way to create shallow clones of Object instances:
const existing = { a: 1, b: 2, c: 3 };
const { ...clone } = existing;
If you need to support older versions of JavaScript, the most-compatible way to clone an Object is by manually iterating over its properties and filtering out inherited ones using .hasOwnProperty()
.
var existing = { a: 1, b: 2, c: 3 };
var clone = {};
for (var prop in existing) {
if (existing.hasOwnProperty(prop)) {
clone[prop] = existing[prop];
}
}