JavaScript:如何将单个全局对象传递给 类 的集合?
JavaScript: How to pass single global object to set of classes?
我有一组全局对象。这些全局变量可以有不同的设置。
var s1 = {
test1: 10,
test2: 20
}
var s2 = {
test1: 10,
test2: 50
}
...
而且我有一组 类 使用这些对象进行自我配置。它们可能看起来像这样:
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),
...
我有一组全局对象。这些全局变量可以有不同的设置。
var s1 = {
test1: 10,
test2: 20
}
var s2 = {
test1: 10,
test2: 50
}
...
而且我有一组 类 使用这些对象进行自我配置。它们可能看起来像这样:
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),
...