index.js
function mixin(target) {
  Array.prototype.slice.call(arguments, 1).forEach(function forEach(o) {
    Object.getOwnPropertyNames(o).forEach(function eachAttr(attr) {
      Object.defineProperty(target, attr, Object.getOwnPropertyDescriptor(o, attr));
    });
  });

  return target;
}
function mixin(target) {
  Array.prototype.slice.call(arguments, 1).forEach(function forEach(o) {
    Object.getOwnPropertyNames(o).forEach(function eachAttr(attr) {
      Object.defineProperty(target, attr, Object.getOwnPropertyDescriptor(o, attr));
    });
  });

  return target;
}
function mixin ( target ) { Array . prototype . slice . call ( arguments , 1 ) . forEach ( function forEach ( o ) { Object . getOwnPropertyNames ( o ) . forEach ( function eachAttr ( attr ) { Object . defineProperty ( target , attr , Object . getOwnPropertyDescriptor ( o , attr ) ) ; } ) ; } ) ; return target ; }
Mix multiple objects in to one single object that contains the properties of
all given objects. This assumes objects that are not nested deeply and it
correctly transfers objects that were created using `Object.defineProperty`.

@returns {Object} target
@api public
Mix multiple objects in to one single object that contains the properties of all given objects . This assumes objects that are not nested deeply and it correctly transfers objects that were created using Object . defineProperty .