JavaScript:如何将单个全局对象传递给一组类?

标签 javascript class global

我有一组全局对象。这些全局变量可以有不同的设置。

var s1 = {
    test1: 10,
    test2: 20
}

var s2 = {
    test1: 10,
    test2: 50
}
...

我有一组使用这些对象进行 self 配置的类。它们可能看起来像这样:

var classA = function(s) {
    this.pA1 = s.test1 + s.test2;
    this.pA2 = Math.sqrt(s.test1);
}

var classB = function(s) {
    this.pB1 = s.test1 * s.test2;
    this.pB2 = s.test1 + s.test2 - s.test1 * s.test2;
}
...

这些类的实例是:

var iA1 = new classA(s1);
var iB1 = new classB(s1);
...

var iA2 = new classA(s2);
var iB2 = new classB(s2);
...

实际上,我有更多设置、类和实例。

如何在不每次传递参数的情况下做到这一点?

最佳答案

function factory(s) {
    return {
        iA: new classA(s),
        iB: new classB(s),
        iC: new classC(s),
        iD: new classD(s)
    };
}

var set1 = factory(s1),
    set2 = factory(s2),
    ...

或者:

function factory(constructors, arg1, arg2) {
    var res = {};
    for (var i in constructors) {
        var ctor = constructors[i];
        res[ctor.name] = new ctor(arg1, arg2);
    }
    return res;
}

var constructors = [ classA, classB, classC ];
var set1 = factory(constructors, s1),
    set2 = factory(constructors, s2),
    ...

关于JavaScript:如何将单个全局对象传递给一组类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33317941/

相关文章:

javascript - 将 javascript 放在 html5 的外部文件中

javascript - 在 Javascript 中,Onclick Img 标记和递增(在 1-10 之间)和 onclick 其他 img 和递减(在 1-10 之间)相同的计数器

html - 易于维护的 CSS 或轻量级 HTML?

php - 从静态方法中创建类实例

JavaScript - 检查是否在全局上下文中

python - 使每个进程都可以访问全局变量

javascript - node.js、heroku 中的错误状态 413 是什么意思?

header 中定义的静态类方法中的 C++ 静态变量

python - 在不使用全局的情况下调用不同函数中的变量

javascript - 配置 Angular FileManager 以供自定义使用