"use strict"; var callable = require("./valid-callable") , forEach = require("./for-each") , call = Function.prototype.call; module.exports = function (obj, cb /*, thisArg*/) { var result = {}, thisArg = arguments[2]; callable(cb); forEach( obj, function (value, key, targetObj, index) { result[call.call(cb, thisArg, key, value, this, index)] = value; }, obj ); return result; };