从公共方法调用私有方法?

Jes*_* Vn 3 javascript

我定义了这样一个类:

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

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

};
Run Code Online (Sandbox Code Playgroud)

我要寻找出路,从私人调用一个公共方法(或申请一个公共变量的值)(FUNC2()).任何sugestions?

Pd:很抱歉,如果我使用的术语强烈针对对象,因为我是一名C++程序员,而且我在javascript编程方面有点新手.

Sop*_*ert 8

Func1,您可以Func2直接致电:

this.Func1 = function() {
  Func2();
};
Run Code Online (Sandbox Code Playgroud)

但是,你不能这样做来调用Func1,Func2因为Func2will(可能)在调用时会有不同的范围和不同的定义this; this.Func1将是未定义的.正如下面提到的alx,您可以使用另一个变量来保存范围,该变量在从内部函数使用时将保留其值.您还可以将引用保存Func1在本地范围中,如下所示:

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

function Func2() {
  Func1();
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为它不依赖于更改引用this.

  • 这只有在用`.apply(this)`或`.call(this)`调用`Func2`时才有效. (2认同)

小智 7

使用闭包:

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

        var me = this;

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

    };
Run Code Online (Sandbox Code Playgroud)