Один из способов, который я могу придумать, - это использовать замыкание, назначенное имени и возвращающее новый объект.Вы должны передать любые аргументы конструктору через вызов замыкания.В конечном итоге это выглядит примерно так:
var fooFactory = function (a, b) {
var c = 5,
d = 6,
foo;
foo = function (a, b) {
this.a = a;
this.b = b;
this.bar();
}
foo.prototype.bar = function () {
//do something with c and d
this.c = c + d;
}
foo.prototype.getC = function () {
return c;
}
foo.prototype.getD = function () {
return d;
}
return new foo(a, b);
};
Таким образом, a и b всегда объявляются однозначно.Затем вы бы построили свой объект так:
var obj = fooFactory(1, 2);
//obj contains new object: { a: 1, b: 2, c: 11 }
console.log(obj.getC());
//returns 5