如何正确选择javascript模式

时间:2016-02-05 23:10:49

标签: javascript object design-patterns architecture pattern-matching

我创建了2个对象:

<Button
    android:id="@+id/register"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_marginBottom="30dp"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/password"
    android:text="Register"
    android:textSize="15dp"
    android:textColor="@android:color/white"/>

并使用大量选项初始化此对象

  var Documentos = new QuadForm();
  var Cadastro = new QuadForm();

然后我尝试将每个对象管理的数据与 getName 方法分开,但在第二个对象之后, myObjectName 变量被覆盖。< / p>

    Cadastro.initForm(options);
    Documentos.initForm(options2);

然后我使用窗口[ myObjectName ]。totalRecords但是当它更改为最新的对象名时,当然无法访问数据。

我该如何管理呢。

1 个答案:

答案 0 :(得分:0)

管理多个实例并不是一个大问题,但是您的方法是不可能的,因为您无法真正找到所有可能的实例,而您的代码肯定不是您期望的那样。

例如,您可以在构造函数对象上定义一个包含所有实例的变量,并且在某些情况下可以使用它:

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
 */