簡體   English   中英

Javascript:從其他上下文訪問類實例

[英]Javascript: Access a class instance from a different context

我有一個已經初始化過的類(通過new關鍵字)。 現在,我處於不同的上下文中,並且需要訪問此類的相同實例才能訪問其方法。 我不想創建類的新實例。

例如,我在疊加層中有2個視圖(View1和View2)。 通過單擊按鈕來調用View1,並且在View1中是用於訪問View2的按鈕。 單擊View1中的該按鈕時,我希望銷毀View1,以便屏幕上剩下的唯一覆蓋物是View2。

View1控制器

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

類視圖1

function View1() {

}
View1.prototype.close = function() {

};

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

我該如何實現?

我認為,如果您只需要該類的一個實例,那么這就是Singleton設計模式的目的。

首先,Javascript沒有類。 Javascript有對象。 當您更好地學習語言時,這是一個重要的區別。

其次,對象總是按引用而不是按值傳遞。

這意味着,當您像使用=運算符一樣“復制”對象時,您只是在使另一個變量引用同一對象。

因此,您要設置一個變量,使其等於從兩個范圍均可訪問該變量的對象(最壞的情況是全局變量)。 目前尚不清楚您要從問題中做什么,因此,如果這樣做沒有幫助,我是否可以建議您舉一個示例說明您想做什么?

該解決方案可能看起來像這樣:

var g_dog;

f1();
f2();

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM