|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'use strict' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = merge |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var hasOwnProperty = Object.prototype.hasOwnProperty |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function merge(dest, src, redefine) { |
|
|
if (!dest) { |
|
|
throw new TypeError('argument dest is required') |
|
|
} |
|
|
|
|
|
if (!src) { |
|
|
throw new TypeError('argument src is required') |
|
|
} |
|
|
|
|
|
if (redefine === undefined) { |
|
|
|
|
|
redefine = true |
|
|
} |
|
|
|
|
|
Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { |
|
|
if (!redefine && hasOwnProperty.call(dest, name)) { |
|
|
|
|
|
return |
|
|
} |
|
|
|
|
|
|
|
|
var descriptor = Object.getOwnPropertyDescriptor(src, name) |
|
|
Object.defineProperty(dest, name, descriptor) |
|
|
}) |
|
|
|
|
|
return dest |
|
|
} |
|
|
|