gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:31:30 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com