1. 程式人生 > >關於閉包即雙層裝飾器的理解

關於閉包即雙層裝飾器的理解

多層裝飾器 技術 14. mage 作用 成了 概念 http 全局

** 閉包**:就是一個概念,出現在嵌套函數中,指的是內層函數引用到了外層函數的**自由變量**(未在本地作用域中定義的局部變量),就形成了閉包。 函數的局部作用域是不能夠保存信息的,即在函數內部聲明變量在函數調用結束之後函數裏面保存的信息就被銷毀了,包括函數的參數。而這時使用閉包的話就能發揮作用: **保存函數的狀態信息,使函數的局部變量信息依然可以保存下來**。形成閉包之後,閉包變量能夠隨著閉包函數的調用而實時更新,就好像是一個全局變量那樣。

技術分享圖片

我們發現每次再運行該函數,裏面的count變量其實已然保存。如果你希望函數的每次執行結果,都是基於這個函數上次的運行結果。
通過以上簡單的代碼就很明了了閉包的好處之一。

另一個好處:閉包可以根據外部作用域的局部變量來得到不同的結果,這有點像一種類似配置功能的作用,我們可以修改外部的變量,閉包根據這個變量展現出不同的功能。這點在裝飾器中得到大量運用。

**多層裝飾器**的運行套用都是從下套上,一層套一層,具體看一下代碼就明曉。

技術分享圖片

兩層裝飾器能很好的完成註冊,方便構成架子寫進不同函數:
技術分享圖片

關於閉包即雙層裝飾器的理解