与 JavaScript 类 合并

Pooling with JavaScript classes

在编写基于 JavaScript 的游戏时,我通常使用对象池来减少 GC 工作。这通常涉及将构造函数应用于现有对象,例如:

constructor.apply(object, arguments);

这样,构造函数既可用于创建新对象,也可用于 'setting up' 现有对象。 (我见过其他做类似事情的池化系统。)

问题是 JavaScript class 构造函数(即使用 'class' 关键字创建的)只能用 'new' 调用,也就是说上面的代码没有更长的作品。

我的问题是,是否有一种实用的方法可以使用通过 'class' 创建的 classes 进行池化?或者这里最好的选择是放弃 'class' 并只设置(所谓的)classes 'manually' 而不使用 'class' 关键字?

与其重新应用构造函数,这是一件坏事而且令人困惑,您只需在 init 方法中编写初始化逻辑,然后在构造函数中调用 this.init()

当你想重新初始化一个对象时,只要调用obj.init(),大家就明白了。

class Foo {
    constructor(...args) {
        this.init(...args)
    }

    init(val) {
        this.val = val
    }
}

const f = new Foo(42)
console.log(f.val)
f.init(43)
console.log(f.val)