function extend(destination, source) {
for (var k in source) {
if (source.hasOwnProperty(k)) {
destination[k] = source[k];
}
}
return destination;
}
This is a vanilla JavaScript version of extend however it does not work for symbol-keyed properties (because symbols are not visible in for…in iterations.
With JavaScript 2015 (ES6) there is a new way to achieve this with a new native function on the Object type called assign.