我想调用另一个函数中 的函数。
函数示例:
function funcOne() {
function funcTwo() { // i want to call to this function
//do something
}
}
当我点击这两个功能 之外的按钮时,我需要拨打funcTwo
功能
我该怎么做?
答案 0 :(得分:2)
不,除非您退回该功能,否则无法致电。
Function2对function1是私有的。
你使用
function funcOne() {
return {
funcTwo :function() { // i want to call to this function
//do something
}
}
}
编辑:构建代码
function funcOne() {
var funcTwo = function() { // private function
//do something
}
return {
funcTwo : funcTwo
}
}
现在您可以将其命名为:
funcOne().funcTwo()
答案 1 :(得分:1)
正如您在示例中定义的那样,您不能。 funcTwo
的范围限定在funcOne
内,因此只能从funcOne
内部调用。您可以将funcTwo
分配给范围在funcOne
之外的变量,该变量可以正常工作:
var funcRef;
function funcOne() {
funcRef = function funcTwo() {
}
}
在这种情况下,funcRef
会保留一个引用并可以使用,但该引用仅在funcOne
执行后设置。
答案 2 :(得分:1)
阅读一些Douglas Crockford可能有助于您理解......
尝试重新编码为:
function funcOne() {
this.funcTwo = function() {
}
}
我认为您必须声明一个funcOne对象的实例,然后调用该对象的funcTwo方法。我现在有点忙,所以现在我无法改进这个答案。
答案 3 :(得分:0)
不可能,因为第二个函数将在调用第一个函数时创建。在此之前它不存在。
您必须在第一个函数之外定义它,如下所示:
function funcOne() {
}
function funcTwo() { // i want to call to this function
//do something
}
或者您也可以调用第一个函数并返回第二个函数:
function funcOne() {
function funcTwo() { // i want to call to this function
//do something
}
return functTwo;
}
然后像这样称呼它:
var f = funcOne();
f();