Spaces:
Running
Running
| 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 | |