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

时间:2011-06-21 05:40:58

标签: javascript

我已经定义了这样一个类:

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

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

};

我想找到一种方法从私有方法(Func2())调用公共方法(或获取公共变量的值)。任何sugestions?

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

3 个答案:

答案 0 :(得分:8)

Func1,您可以直接致电Func2

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

但是,您无法从Func1拨打Func2,因为Func2在调用this时可能(可能)具有不同的范围和不同的this.Func1定义; Func1将不确定。正如下面提到的alx,您可以使用另一个变量来保存范围,该变量在从内部函数使用时将保留其值。您还可以在本地范围内保存对var Func1 = this.Func1 = function() { // fun stuff }; function Func2() { Func1(); } 的引用,如下所示:

this

这是有效的,因为它不依赖于更改引用{{1}}。

答案 1 :(得分:7)

使用闭包:

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

        var me = this;

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

    };

答案 2 :(得分:-1)

在同一范围内声明,公共方法知道私有方法,因此您只需简单地调用它:

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