dom-factory
Version:
Enhance HTML elements using plain JavaScript objects.
25 lines • 691 B
JavaScript
/**
* Assign descriptors
* @param {Object} target
* @param {...Object} sources
* @return {Object}
*/
export const assign = (target, ...sources) => {
sources.forEach(source => {
if (!source) {
return
}
let descriptors = Object.keys(source).reduce((descriptors, key) => {
descriptors[key] = Object.getOwnPropertyDescriptor(source, key)
return descriptors
}, {})
Object.getOwnPropertySymbols(source).forEach(sym => {
let descriptor = Object.getOwnPropertyDescriptor(source, sym)
if (descriptor.enumerable) {
descriptors[sym] = descriptor
}
})
Object.defineProperties(target, descriptors)
})
return target
}