JavaScript里的闭包
程序员文章站
2022-04-19 10:54:16
...
function GISMapPanel() { this.mapPanel = document.getElementById("mapDiv"); this.width; this.height; this.showMap = function() { alert(this.mapPanel); //tip:[object] this.mapPanel.onmousedown = this.mouseDownEventProcess(); } this.mouseDownEventProcess = function( ){ var _this = this; return function() { alert(this.mapPanel); //tip:undefined,why; _this.width = 400; _this.height = 300; //other codes } } }
闭包简单的解释是,ECMAScript允许inner functions(嵌套函数):函数可以定义在另外一个函数里面。这些内部的函数可以访问outer function(父函数)的local变量,参数,其它内部函数。当内部函数被构造,并可以在函数外被获得(函数当成返回值),这个内部函数在 outer function返回后被执行(在outer函数外执行),那一个闭包形成了。
闭包特征:A、作为一个函数变量的一个引用,当函数返回时,其处于激活状态;B、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。