簡體   English   中英

從公共方法調用私有方法?

[英]Call private method from public method?

我定義了這樣一個類:

function Class1(){
    this.Func1 = function(){
       /* Methods and vars */
    };

    function Func2(){
       /* Methods and vars */
    };

};

我想找到一種方法來從私有方法(Func2())調用公共方法(或獲取公共變量的值)。 任何sugestions?

Pd:很抱歉,如果我使用的術語強烈針對對象,因為我是一名C ++程序員,而且我在javascript編程方面有點新手。

Func1 ,您可以直接調用Func2

this.Func1 = function() {
  Func2();
};

但是,你不能做同樣的調用Func1Func2因為Func2將(可能)有不同范圍和不同的定義, this時候它被調用; this.Func1將是未定義的。 正如下面提到的alx,您可以使用另一個變量來保存范圍,該變量在從內部函數使用時將保留其值。 您還可以在本地范圍中保存對Func1的引用,如下所示:

var Func1 = this.Func1 = function() {
  // fun stuff
};

function Func2() {
  Func1();
}

這工作,因為它不依賴於不斷變化的參考this

使用閉包:

function Class1(){
        this.Func1 = function(){
           /* Methods and vars */
        };

        var me = this;

        function Func2(){
           me.Func1();
        };

    };

在同一范圍內聲明,公共方法知道私有方法,因此您只需簡單地調用它:

function Object1(){
    this.publicMethod = function(){         
        alert("I'm a public method ;)");
    };
    var that = this;
    function privateMethod(){
        return that.publicMethod.apply(that,arguments);
    };
};

暫無
暫無

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

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