34 lines
		
	
	
		
			806 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			806 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /*! | ||
|  |  * 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; | ||
|  | }; |