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!没问题,很高兴我能帮忙