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.
33 lines
454 B
33 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
|
|
|