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
						
					
					
				| '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
 |