| /*! |
| * object-visit <https://github.com/jonschlinkert/object-visit> |
| * |
| * Copyright (c) 2015, 2017, Jon Schlinkert. |
| * Released under the MIT License. |
| */ |
| |
| 'use strict'; |
| |
| var isObject = require('isobject'); |
| |
| module.exports = function visit(thisArg, method, target, val) { |
| if (!isObject(thisArg) && typeof thisArg !== 'function') { |
| throw new Error('object-visit expects `thisArg` to be an object.'); |
| } |
| |
| if (typeof method !== 'string') { |
| throw new Error('object-visit expects `method` name to be a string'); |
| } |
| |
| if (typeof thisArg[method] !== 'function') { |
| return thisArg; |
| } |
| |
| var args = [].slice.call(arguments, 3); |
| target = target || {}; |
| |
| for (var key in target) { |
| var arr = [key, target[key]].concat(args); |
| thisArg[method].apply(thisArg, arr); |
| } |
| return thisArg; |
| }; |