我有一个已经初始化的类(通过new关键字)。现在我在不同的上下文中,我需要访问此类的相同实例才能访问其方法。我不想创建该类的新实例。
例如,我在叠加层中有2个视图(View1和View2)。通过单击按钮调用View1,在View1中是一个访问View2的按钮。单击View1中的该按钮时,我希望销毁View1,使屏幕上剩下的唯一叠加层是View2。
function View1Controller() {
this.view1 = new View1();
}
function View1() {
}
View1.prototype.close = function() {
};
function View2() {
}
View2.prototype.open = function() {
// close View1
// I need access to the initialized view1 in View1Controller so I can call View1 close()
};
function Controller() {
this.view2 = new View2();
}
我怎样才能做到这一点?
答案 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();
}