怎麼理解JavaScript閉包

學習參數

學習參考: 學習Javascript閉包(Closure)

什麼是閉包

你去百度Google好了!反正是說了那麼多也沒能好好理解閉包,

通俗地講閉包就是一個定義在函數內部的函數


當然你可以把父函數當作一個對象也就是(object)使用,

把閉包當作它的公開方法(public method),

把內部變量當作它的私有屬性(private value)

理解閉包思想

閉包訪問全局變量

<script>
    var name = "The Window";
    var object = {
        name : "My Object",
        getNameFunc : function(){
            // 返回一個匿名全局方法
            return function(){
                // 匿名全局方法的當前 this 爲 window 對象,
                // 所以 return this.name 也就是返回了 window 對象下的全局變量 name,
                // 所示調用時會輸出 The Window
                return this.name;
            };
        }
    };

    alert(object.getNameFunc()());  // The Window
</script>

閉包訪問局部變量

<script>
    var name = "The Window";
    var obj = {
        name : "My Object",
        getNameFunc : function(){
            // 保存當前 this 也就是 obj 對象
            var that = this;
            // 返回一個匿名全局方法
            return function(){
                // 返回當前對象 obj 屬性 name
                // 所示調用時會輸出 My Object
                return that.name;
            };
        }
    };

    alert(obj.getNameFunc()());  // My Object
</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章