首頁 > web前端 > js教程 > JavaScript閉包實例講解_javascript技巧

JavaScript閉包實例講解_javascript技巧

WBOY
發布: 2016-05-16 16:51:42
原創
1080 人瀏覽過

這帶來的好處是內部函數可以存取定義它們的外部函數的參數和變數。

首先,我們來建構一個簡單的物件。

複製碼 程式碼如下:

var testObj = {


var testObj = {

var testObj = {


    add: function(inc){

        this.value = (typeof inc === "number") ?inc : 1;

    }
}

}testObj.add();
testObj.value; // 11

複製程式碼


程式碼如下:


var testObj = (function(>

var test value = 10;
    return {
        add: function(inc){          },

        getValue: function (){
            return value;

        }

    };
})();

    };
})();  

testObj.add();
testObj.getValue(); // 11




複製程式碼


程式碼如下:

var MyObj = function( 是str .status = str;
};


MyObj.prototype.getStatus = function(){
    return this.status;
}; var obj = new MyObj("javascript");obj.getStatus(); // "javascript"這樣寫並沒有錯,但是會有一點“多此一舉”,為什麼要用一個getStatus方法去存取一個本來可以直接存取到的屬性呢?如果status是私有屬性,那當然才有意義。


複製程式碼


程式碼如下:

var obj = function(status){


var obj = function(status){

        getStatus: function(){           以 return status;   var myObj = obj("javascript");myObj.getStatus(); // "javascript"這裡當我們呼叫obj的時候,它會傳回包含getStatus方法的一個新物件,該物件的一個參考保存在myObj中,即使obj已經回傳了,但getStatus方法仍然享有存取obj物件的status屬性的特權。 getStatus方法並不是存取該參數的副本,它所存取的就是該參數本身。這是可能的,因為該函數可以存取它被創建時所處的上下文環境,這稱為閉包。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板