如何在 javascript 中访问父函数闭包
How do I access parent functions closure in javascript?
在
以下情况下,我将如何访问父函数"var"变量(我只能编辑重置函数的定义):
_.bind(function(){
var foo = 5;
var reset = function(){
foo = 6; //this changes foo,
bar = 7; //**I want this to add another "var", so I don't pollute global scope
}
reset();
console.log(foo); //6
console.log(bar); //7
}, window);
对不起,但你不能。
访问命名空间的唯一方法是 with
语句。
例如,如果你能够重写整个事情,它可以像这样完成:
_.bind(function(){
var parentNamespace = {
foo: 5,
};
with (parentNamespace) {
var reset = function(){
foo = 6; //this changes foo,
parentNamespace.bar = 7; //**I want this to add another "var", so I don't pollute global scope
}
reset();
console.log(foo); //6
console.log(bar); //7
}
}, window);
但这
这对你有用吗?
_.bind(function(){
var foo = 5, bar;
var reset = function(){
foo = 6; //this changes foo,
bar = 7; //**I want this to add another "var", so I don't pollute global scope
}
reset();
console.log(foo); //6
console.log(bar); //7
}, window);
我不确定我是否理解你的问题,所以我的答案可能不是你想要的。
var reset = function(){
foo = 6;
reset.bar = 7;
}
reset.bar = 13;
reset(); // reset.bar is back to 7.
ECMA-262 确实阻止访问函数的变量对象(函数实际上不必有一个,它们只需要表现得好像它们有一样),所以你无法访问它。
您只能通过在适当的范围内声明变量或将它们包含在 FunctionStatement 或 FunctionExpression 的形式参数列表中来添加属性,没有其他方法。
相关文章:
- 构造函数函数闭包变量
- var 函数名称与函数闭包中的名称分配
- 函数闭包
- 何时使用自包含函数(闭包),何时不使用自包含函数
- 避免在 JavaScript 中使用函数闭包
- 难以理解Javascript嵌套函数/闭包
- 在 Javascript 中优化函数闭包的使用有多大价值
- 调用超级构造函数(闭包编译器和库)
- 如何从浏览器控制台访问存储在函数闭包中的 javascript 变量
- 如何在 javascript 中访问父函数闭包
- 函数闭包中的另一个jQuery版本
- jquery对象文字函数/闭包-缺少一些明显的东西
- 这两个使用父类的函数闭包有什么区别吗?
- JavaScript自调用函数闭包不能正常工作
- 改变“;var”;在创建新实例的构造函数闭包内部
- 函数闭包显示外部函数的变量
- 如何使用jsdoc-toolkit记录匿名函数(闭包)
- .prototype不允许在函数闭包中使用
- 自调用匿名函数闭包内变量的生命周期
- 多个文件上的相同函数闭包