与JavaScript类汇集

问题描述 投票:1回答:1

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

constructor.apply(object, arguments);

这样,构造函数既可用于创建新对象,也可用于“设置”现有对象。 (我见过其他类似的池系统。)

问题是JavaScript类构造函数(即使用'class'关键字创建)只能使用'new'调用,这意味着上面的代码不再有效。

我的问题是,是否有一种实用的方法来使用通过'class'创建的类来池化?或者,这是放弃“课堂”并且只是“手动”设置(所谓的)课程而不使用“class”关键字的最佳选择?

javascript class pooling
1个回答
1
投票

您只需在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)
© www.soinside.com 2019 - 2024. All rights reserved.