我定义了这样一个类:
function Class1(){
this.Func1 = function(){
/* Methods and vars */
};
function Func2(){
/* Methods and vars */
};
};
Run Code Online (Sandbox Code Playgroud)
我要寻找出路,从私人调用一个公共方法(或申请一个公共变量的值)(FUNC2()).任何sugestions?
Pd:很抱歉,如果我使用的术语强烈针对对象,因为我是一名C++程序员,而且我在javascript编程方面有点新手.
从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.
小智 7
使用闭包:
function Class1(){
this.Func1 = function(){
/* Methods and vars */
};
var me = this;
function Func2(){
me.Func1();
};
};
Run Code Online (Sandbox Code Playgroud)