node package manager



Simple mixin and a few other functions for working with js objects

mixin(target, ...sources) - Simple mixin that takes multiple sources.

Mixin does NOT copy non-enumerable properties. It returns target object.

var mixin = require('otools').mixin;
var opts = mixin({}, defaults, opts);

each(object, function) - Loops over object keys and values with an iterator function.

Each does NOT iterate over non-enumerable properties.

var each = require('otools').each;
var obj = { Hello: " World!", "Goodbye": " everybody!" };
each(obj, function(value, key) {
  // this === obj
  console.log(key, value);
// Hello World!
// Goodbye everbody!

eachOwn(object, function) - Only loops over own properties of the object

eachOwn does NOT iterate over inherited properties or non-enumerable properties.

var eachOwn = require('otools').eachOwn;
var obj2 = Object.create(obj);
obj2.nothing = " to say."
// inherited from prototype
// obj2.Hello === ' World!'
eachOwn(obj2, function(value, key) {
  console.log(key, value);
// Nothing to say!