Javascript:从不同的上下文访问类实例

时间:2013-09-09 18:09:42

标签: javascript

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

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

View1控制器

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

Class View1

function View1() {

}
View1.prototype.close = function() {

};

Class View2

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();
}

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

首先,Javascript没有类。 Javascript有对象。当你更好地学习语言时,这是一个重要的区别。

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

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

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

解决方案可能如下所示:

var g_dog;

f1();
f2();

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

function f2() {
    g_dog.bark();
}