javascript 中的函数通过保持指向其封闭范围的(隐藏)链接来形成闭包。
当我们拥有函数(作为变量值)时,是否可以通过编程方式访问它?
真正的目标是理论上的,但演示可能是列出闭包的属性。
var x = (function(){
var y = 5;
return function() {
alert(y);
};
})();
//access y here with x somehow
最佳答案
这就是闭包的(其中一个)目的——保持信息的私密性。由于函数已经被执行,它的范围变量不再可以从外部获得(并且从来没有)——只有在它的范围内执行的函数(仍然)可以访问。
但是您可以通过 getters/setters 授予访问权限。
你可能想看看 Stuart Langridge's talk关于关闭。非常值得推荐的还有 Douglas Crockfords Explanations。你可以用闭包做很多花哨的事情;)
编辑: 您有几个选项来检查闭包:在 Web 开发人员控制台中观察对象,或者(就像我经常做的那样)返回一个将所有私有(private)变量转储到控制台的调试函数。
关于javascript - 是否有可能访问函数的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192875/