我已经定义了这样一个类:
function Class1(){
this.Func1 = function(){
/* Methods and vars */
};
function Func2(){
/* Methods and vars */
};
};
我想找到一种方法从私有方法(Func2())调用公共方法(或获取公共变量的值)。任何sugestions?
Pd:很抱歉,如果我使用的术语强烈针对对象,因为我是一名C ++程序员,而且我在javascript编程方面有点新鲜。
答案 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);
};
};