如何正确选择javascript模式
我创建了两个对象:如何正确选择javascript模式,javascript,object,design-patterns,architecture,pattern-matching,Javascript,Object,Design Patterns,Architecture,Pattern Matching,我创建了两个对象: var Documentos = new QuadForm(); var Cadastro = new QuadForm(); 并使用许多选项初始化这些对象 Cadastro.initForm(options); Documentos.initForm(options2); 然后我尝试用getName方法分离每个对象管理的数据,但是在第二个对象之后,myObjectName变量被覆盖 var QuadForm; QuadForm = fun
var Documentos = new QuadForm();
var Cadastro = new QuadForm();
并使用许多选项初始化这些对象
Cadastro.initForm(options);
Documentos.initForm(options2);
然后我尝试用getName方法分离每个对象管理的数据,但是在第二个对象之后,myObjectName变量被覆盖
var QuadForm;
QuadForm = function () {
this.getName = function () {
// search through the global object for a name that resolves to this object
for (var name in window)
if (window[name] == this) {
window[name] = this;
window[window[name]] = window[name];
myObjectName= name;
break;
}
},
this.initForm = function (parms) {
this.getName()
$.extend(this, parms);
if (window.myState) {
delete window.myState;
}
this.containerId = parms.formId;
this.getForm(parms);
this.workflowLabels('hide');
然后我使用window[myObjectName].totalRecords,但当它更改为最新的对象名称时,它无法访问数据
如何管理它。管理多个实例不是什么大问题,但您的方法是不可能的,因为您无法真正找到所有可能的实例,而且您的代码肯定没有达到预期的效果 例如,您可以在构造函数对象上定义一个包含所有实例的变量,然后在某些情况下使用该变量:
var QuadForm = function (name) {
this.name = name;
QuadForm.instances.push(this);
this.showAllOtherInstances = function () {
QuadForm.instances.forEach(function (instance) {
if (instance !== this) {
console.log('name: ' + instance.name);
}
}.bind(this));
}
}
QuadForm.instances = [];
var foo = new QuadForm('foo');
var anotherFoo = new QuadForm('foo');
var bar = new QuadForm('bar');
var aThirdFoo = new QuadForm('foo');
foo.showAllOtherInstances();
/*
* Output:
*
* name: foo
* name: bar
* name: foo
*/
你的目标是什么?您是否正在尝试查找构造函数的每个实例
QuadForm
?那么让我说,你没有机会以一种符合所有情况的方式做到这一点!无论如何,很明显,您的变量被覆盖了,因为您覆盖了它好几次。不可能这样做吗?同一视图中的两个实例和管理多个实例数据的quadform类?