34 lines
		
	
	
		
			454 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			454 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'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
 |