Javascript 调用内部函数

Javascript 调用内部函数,javascript,Javascript,如果我有: var myFunction = function() { var myInner = function() { } } 那么如何调用myFunction.myInner?您可以这样调用它: var myFunction = function() { var myInner = function() {} return myInner; } myFunction()(); 在您的示例中,您正在创建内部函数,但必须返回它以使其可访问 您可以这样称

如果我有:

var myFunction = function() {
    var myInner = function() {
    }
}

那么如何调用myFunction.myInner?

您可以这样调用它:

var myFunction = function() {
    var myInner = function() {}

    return myInner;
}

myFunction()();

在您的示例中,您正在创建内部函数,但必须返回它以使其可访问

您可以这样称呼它:

var myFunction = function() {
    var myInner = function() {}

    return myInner;
}

myFunction()();

在您的示例中,您正在创建内部函数,但必须返回它以使其可访问

您还可以执行以下操作:

var myFunction = function () {
   this.myInner = function () {
     //...
   }
}

var foo = new myFunction();
foo.myInner();
或者我用来模拟静态类的另一种模式:

var myFunction = new function () {
   this.myInner = function () {
     //...
   }
};

myFunction.myInner();

您还可以执行以下操作:

var myFunction = function () {
   this.myInner = function () {
     //...
   }
}

var foo = new myFunction();
foo.myInner();
或者我用来模拟静态类的另一种模式:

var myFunction = new function () {
   this.myInner = function () {
     //...
   }
};

myFunction.myInner();

在这种情况下,当运行外部函数内部的代码时,只能调用内部函数。。。除非以某种方式返回内部函数

var myFunction = function() {
    var myInner = function() {
    }
    // you can call it here
    myInner();
}

在这种情况下,当运行外部函数内部的代码时,只能调用内部函数。。。除非以某种方式返回内部函数

var myFunction = function() {
    var myInner = function() {
    }
    // you can call it here
    myInner();
}

如果对象的构造略有不同,则可以使用:

var myFunction = {
  innerFunction: function(txt){
    alert(txt);
  }    
}

myFunction.innerFunction("heyooo");
这可能并不理想,但这取决于您试图实现的目标


小提琴:

如果您构建的对象略有不同,您可以使用:

var myFunction = {
  innerFunction: function(txt){
    alert(txt);
  }    
}

myFunction.innerFunction("heyooo");
这可能并不理想,但这取决于您试图实现的目标


小提琴:你不能。让我重述一个问题,让我们看一看这个噩梦般的世界,在那里你可以按照你的要求去做


如果你想访问内部函数,你需要返回它或设置一个全局变量,或者如果它是一个变量而不是一个函数,你需要做的任何事情。

你不能。让我重述一个问题,让我们看一看这个噩梦般的世界,在那里你可以按照你的要求去做


如果你想访问内部函数,你需要返回它或设置一个全局变量,或者如果它是一个变量而不是一个函数,你还需要做的任何事情。

函数是JavaScript中的作用域。不能从函数中调用函数,除非将其声明为方法。有些人建议你使用物体或奇怪的图案,这可能是你想要的,也可能不是你想要的

如果您想要具有公共/私有方法和变量的类函数,请执行以下操作:

//Declare your "class"
function Foo(specs) {

    //Can do whatever you want with specs
    //jQuery uses it to initialize plugin data ;)

    //These are examples of private variables
    var a = 1;
    var b = "b";

    //These are examples of public variables
    this.aa = 1;
    this.bb = "b";

    //This is a private method
    function Bar_Private(p0,p1) {...}

    //This is a public method
    this.Bar_Public = function(p0,p1) {...}

}

//Now to use it....
//Create an instance
var myInstance = new Foo();

//Using it
alert(myInstance.a);    //Reference Error
alert(myInstance.aa);   //Alerts 1

myInstance.Bar_Private(0,1);  //Reference Error
myInstance.Bar_Public(0,1);   //Calls Bar_Public with 0 and 1 as params
JavaScript并没有实际的类,但最容易将此模式描述为类

显然,您可以添加任意数量的公共/私有方法、对象等

另外请注意,在使用此模式创建实例时,不要忘记使用新运算符…如果您忘记了,则这将绑定到全局空间,并可以覆盖其他应用程序数据名冲突


希望这有帮助,祝你好运

函数是JavaScript中的作用域。不能从函数中调用函数,除非将其声明为方法。有些人建议你使用物体或奇怪的图案,这可能是你想要的,也可能不是你想要的

如果您想要具有公共/私有方法和变量的类函数,请执行以下操作:

//Declare your "class"
function Foo(specs) {

    //Can do whatever you want with specs
    //jQuery uses it to initialize plugin data ;)

    //These are examples of private variables
    var a = 1;
    var b = "b";

    //These are examples of public variables
    this.aa = 1;
    this.bb = "b";

    //This is a private method
    function Bar_Private(p0,p1) {...}

    //This is a public method
    this.Bar_Public = function(p0,p1) {...}

}

//Now to use it....
//Create an instance
var myInstance = new Foo();

//Using it
alert(myInstance.a);    //Reference Error
alert(myInstance.aa);   //Alerts 1

myInstance.Bar_Private(0,1);  //Reference Error
myInstance.Bar_Public(0,1);   //Calls Bar_Public with 0 and 1 as params
JavaScript并没有实际的类,但最容易将此模式描述为类

显然,您可以添加任意数量的公共/私有方法、对象等

另外请注意,在使用此模式创建实例时,不要忘记使用新运算符…如果您忘记了,则这将绑定到全局空间,并可以覆盖其他应用程序数据名冲突


希望这有帮助,祝你好运

那没有任何意义。你是说我的功能吗?那没有任何意义。你是说myFunction吗?再加上这个。使myInner函数成为myFunction对象上的一个可公开访问的函数,其中使用var通过closuresYea使其私有,我也喜欢nheinrich提到的映射方法。如果您只需要将一组函数组合在一起,那就太好了。如果您需要私有变量和方法调用其他方法之类的,我的方法可能更好。使myInner函数成为myFunction对象上的一个可公开访问的函数,其中使用var通过closuresYea使其私有,我也喜欢nheinrich提到的映射方法。如果您只需要将一组函数组合在一起,那就太好了。如果你需要私有变量和方法调用其他方法,我的方法可能更好。我认为这是一个很好的例子。我认为这是一个很好的例子。这是一个非常完整的答案。谢谢你,jyore!没问题,很高兴我能帮上忙。嗯,这是一个非常完整的答案。谢谢你,jyore!没问题,很高兴我能帮忙