【发布时间】:2016-06-04 10:38:22
【问题描述】:
通常,要创建一个闭包,你会在另一个函数中创建它,它会获取其父函数的作用域:
var parent = function(){
var a = "works!";
var subfunction(){
console.log(a); // "works!"
}
subfunction();
}
我正在尝试找出一种方法来模拟这种闭包行为,该函数在父函数外部 中定义。我知道这可以使用参数:
var parent = function(){
var a = "hello";
subfunction(a);
}
var subfunction(a){
console.log(a); // works, but because it's a param
}
我试图弄清楚是否有一种方法可以做到这一点,而不必显式设置所有参数。我最初认为我可以将函数本地范围对象作为参数传递
var parent = function(){
var a = "hello";
subfunction(localScope);
}
var subfunction(localScope){
console.log(localScope.a); // not going to work this way
}
...但我后来发现it's impossible to get a reference to a function's scope。是否有其他方法可以模拟函数实际范围之外的闭包?
【问题讨论】:
-
Possibly of interest - JavaScript 是一种词法范围的语言。
标签: javascript scope closures