Functions to mix objects

npm install mixing
1 downloads in the last day
6 downloads in the last week
39 downloads in the last month


Functions to mix objects.

NPM version Build Status Built with Grunt



npm install mixing


ringo-admin install gamtiq/mixing


component install gamtiq/mixing


jam install mixing


bower install mixing

AMD, script tag

Use dist/mixing.js or dist/mixing.min.js (minified version).


Node, Ringo, Component

var mixin = require("mixing");


require(["mixing"], function(mixin) {


define(["path/to/dist/mixing.js"], function(mixin) {

Bower, script tag

<!-- Use bower_components/mixing/dist/mixing.js if the library was installed via Bower -->
<script type="text/javascript" src="path/to/dist/mixing.js"></script>
<script type="text/javascript">
    // mixing is available via mixing field of window object
    var mixin = mixing;


var copy = mixin({}, source);   // Make a shallow copy of source
var result = mixin({a: 1, b: 2}, {c: 3, d: 4});   // result is {a: 1, b: 2, c: 3, d: 4}
mixin({a: 1, b: 2}, {a: "a", b: {}, c: 3, d: 4});   // Returns {a: 1, b: 2, c: 3, d: 4}
mixin({a: 1, b: 2, z: 100}, {a: "a", b: {}, c: 3, d: 4}, {overwrite: true});   // Returns {a: "a", b: {}, c: 3, d: 4, z: 100}

      [{a: 1, b: 100}, null, {c: 3, d: new Date(), e: 4}, {f: "str", g: 50}, undefined, {h: 7}], 
          except: ["a", "g"],
          filter: function(field, value, target, source) {
              return typeof value === "number" && value < 10;
      });   // Returns {c: 3, e: 4, h: 7}


See doc directory for details.

mixing(destination: Object, source: Array | Object, [settings: Object]);

Copy/add all fields and functions from source object(s) into the destination object. As a result the destination object may be modified.

Several settings are supported (see doc/module-mixing.html for details):

  • copyFunc: Boolean - Should functions be copied?
  • funcToProto: Boolean - Should functions be copied into prototype of the destination object's constructor?
  • overwrite: Boolean - Should a field/function be overwritten when it exists in the destination object?
  • recursive: Boolean - Should this function be called recursively when field's value of the destination and source object is an object?
  • oneSource: Boolean - Should source array be interpreted directly as copied object instead of list of source objects?
  • except: Array | Object | String - Name(s) of fields/functions that shouldn't be copied.
  • filter: Function - Allows selecting elements that should be copied.
  • otherName: Object - Defines "renaming table" for copied elements.

.mix(source: Array | Object, [settings: Object]);

Copy/add all fields and functions from source objects into this object. As a result this object may be modified. This function can be transferred to an object to use as a method. For example:

SomeClass.prototype.mix = mixing.mix;
var obj = new SomeClass();
obj.mix([obj1, obj2]);



npm loves you