0

我有一个已经初始化的类(通过 new 关键字)。现在我在不同的上下文中,我需要访问这个类的同一个实例才能访问它的方法。我不想创建类的新实例。

例如,我在叠加层中有 2 个视图(View1 和 View2)。View1 通过单击按钮调用,View1 中有一个用于访问 View2 的按钮。当单击 View1 中的该按钮时,我希望 View1 被销毁,以便屏幕上剩下的唯一覆盖是 View2。

View1 控制器

function View1Controller() {
  this.view1 = new View1();
}

类视图1

function View1() {

}
View1.prototype.close = function() {

};

类视图2

function View2() {

}
View2.prototype.open = function() {

  // close View1
  // I need access to the initialized view1 in View1Controller so I can call View1 close()
};

View2 的类控制器

function Controller() {

  this.view2 = new View2();
}

我怎样才能做到这一点?

4

2 回答 2

1

如果您只需要该类的一个实例,我认为这就是单例设计模式的目的。

于 2013-09-09T18:16:18.297 回答
0

首先,Javascript 没有类。Javascript有对象。随着您更好地学习语言,这是您将了解的一个重要区别。

其次,对象总是按引用传递,而不是按值传递。

这意味着当你“复制”一个对象时,就像使用=运算符一样,你只是让另一个变量引用同一个对象。

因此,您希望将一个变量设置为等于可以从两个范围访问该变量的对象(在最坏的情况下,一个全局变量)。从这个问题中不清楚你想做什么,所以如果这没有帮助,我可以建议你发布一个你想要做什么的例子吗?

解决方案可能如下所示:

var g_dog;

f1();
f2();

function f1() {
    var dog = new Dog();
    g_dog = dog;
}

function f2() {
    g_dog.bark();
}
于 2013-09-09T18:22:11.237 回答