ObjectPool.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. var t = require;
  2. var e = module;
  3. class l {
  4. constructor() {
  5. this._objs = [];
  6. }
  7. static registerClass(t, e) {
  8. l._classes[e] = t;
  9. }
  10. static getObjCnt(t) {
  11. return l._content[t] && l._content[t].length;
  12. }
  13. pushObj(t) {
  14. this._objs.push(t);
  15. }
  16. popObj() {
  17. return 0 < this._objs.length ? this._objs.pop() : null;
  18. }
  19. clear() {
  20. for (; 0 < this._objs.length; ) this._objs.pop();
  21. }
  22. static pop(t, ...e) {
  23. l._content[t] || (l._content[t] = []);
  24. var i = l._content[t];
  25. if (i.length) return i.pop();
  26. var s,
  27. o = l._classes[t],
  28. i = e.length;
  29. return (
  30. 0 == i
  31. ? (s = new o())
  32. : 1 == i
  33. ? (s = new o(e[0]))
  34. : 2 == i
  35. ? (s = new o(e[0], e[1]))
  36. : 3 == i
  37. ? (s = new o(e[0], e[1], e[2]))
  38. : 4 == i
  39. ? (s = new o(e[0], e[1], e[2], e[3]))
  40. : 5 == i && (s = new o(e[0], e[1], e[2], e[3], e[4])),
  41. (s.ObjectPoolKey = t),
  42. s
  43. );
  44. }
  45. static popWithExtraKey(t, e, ...i) {
  46. l._content[t] || (l._content[t] = []);
  47. var s,
  48. o,
  49. a,
  50. n = l._content[t];
  51. if (n.length)
  52. for (var r = 0; r < n.length; r++)
  53. if (n[r].extraKey == e) {
  54. (s = n[r]), n.splice(r, 1);
  55. break;
  56. }
  57. return (
  58. s ||
  59. ((o = l._classes[t]),
  60. 0 == (a = i.length)
  61. ? (s = new o())
  62. : 1 == a
  63. ? (s = new o(i[0]))
  64. : 2 == a
  65. ? (s = new o(i[0], i[1]))
  66. : 3 == a
  67. ? (s = new o(i[0], i[1], i[2]))
  68. : 4 == a
  69. ? (s = new o(i[0], i[1], i[2], i[3]))
  70. : 5 == a && (s = new o(i[0], i[1], i[2], i[3], i[4])),
  71. (s.extraKey = e),
  72. (s.ObjectPoolKey = t)),
  73. s
  74. );
  75. }
  76. static print() {}
  77. static push(t) {
  78. if (null == t) return !1;
  79. var e = t.ObjectPoolKey;
  80. return !!l._content[e] && (l._content[e].push(t), !0);
  81. }
  82. static clear() {
  83. l._content = {};
  84. }
  85. static clearClass(t, e = null) {
  86. for (var i = l._content[t]; i && i.length; ) {
  87. var s = i.pop();
  88. e && s[e](), (s = null);
  89. }
  90. (l._content[t] = null), delete l._content[t];
  91. }
  92. static dealFunc(t, e) {
  93. var i = l._content[t];
  94. if (null != i) for (var s = 0, o = i.length; s < o; s++) i[s][e]();
  95. }
  96. }
  97. (l._content = {}), (l._classes = {}), (window.ObjectPool = l);