You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					34 lines
				
				454 B
			
		
		
			
		
	
	
					34 lines
				
				454 B
			| 
											3 years ago
										 | 'use strict' | ||
|  | 
 | ||
|  | function reusify (Constructor) { | ||
|  |   var head = new Constructor() | ||
|  |   var tail = head | ||
|  | 
 | ||
|  |   function get () { | ||
|  |     var current = head | ||
|  | 
 | ||
|  |     if (current.next) { | ||
|  |       head = current.next | ||
|  |     } else { | ||
|  |       head = new Constructor() | ||
|  |       tail = head | ||
|  |     } | ||
|  | 
 | ||
|  |     current.next = null | ||
|  | 
 | ||
|  |     return current | ||
|  |   } | ||
|  | 
 | ||
|  |   function release (obj) { | ||
|  |     tail.next = obj | ||
|  |     tail = obj | ||
|  |   } | ||
|  | 
 | ||
|  |   return { | ||
|  |     get: get, | ||
|  |     release: release | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = reusify |