2011-08-16 76 views
3

所以我想知道是否可以从范围外访问一个变量(它有一个函数的值)。我有这样的代码:函数内的javascript函数

function parentFunction(){ 
    var childFunction = function() { 
    // do something 
    } 
} 

$(function(){ 
    // need to access childFunction() here. 
}); 
+0

可以'parentFunction()'返回'childFunction ()'变量在它的执行结束?或者你在调用'parentFunction()'之前试图影响'childFunction()'? – Rodaine

回答

6
var childFunction; 

function parentFunction(){ 
    childFunction = function() { 
    // do something 
    } 
} 

$(function(){ 
    childFunction(); 
}); 
+0

我想,如果childFunction捕获parentFunction中的任何闭包,这很有用,但否则会失去命名空间并污染全局命名空间。 – Matt

+1

假设这是发生在全球所有在一起,我只是说明范围... – jondavidjohn

+0

它的工作 - 我只需要调用parentFunction首先初始化childFunction的值。然后我可以打电话给儿童功能。谢谢。 – donkapone

2

不,你不知道。实现这一目标的唯一方法是使所需childFunction parentFunction的属性:

var parentFunction = (function(){ 
    var actualParentFunction = function(){ 
     this.childFunction = function() { 
     // do something 
     }; 
    } 

    return new actualParentFunction(); 
})(); 

在这一点上,你可以这样做:

parentFunction.childFunction();