⌈⌋ ⎇ branch:  Bitrhythm


Artifact Content

Artifact 32bfe1330f4e89627035b03a11bfac70312099e907e31f38567a1b443cd1d27b:


import isWritable from '../checks/is-writable'

/**
 * Extend any object with other properties
 * @param   { Object } src - source object
 * @returns { Object } the resulting extended object
 *
 * var obj = { foo: 'baz' }
 * extend(obj, {bar: 'bar', foo: 'bar'})
 * console.log(obj) => {bar: 'bar', foo: 'bar'}
 *
 */
export default function extend(src) {
  let obj
  let i = 1
  const args = arguments
  const l = args.length

  for (; i < l; i++) {
    if (obj = args[i]) {
      for (const key in obj) {
        // check if this property of the source object could be overridden
        if (isWritable(src, key))
          src[key] = obj[key]
      }
    }
  }
  return src
}