js中用函數閉包進行封裝---(function($, owner) {}(mui, window.export = {}));


可以利用js中函數的閉包進行封裝

通常我們可以用下面這種方法進行一個封裝,這樣在外部引入我們寫的這個js文件后,就可以直接使用export.getUserId()這種形式去調用該函數

(function($, owner) {
    /*
     * 中間就可以進行封裝操作
     * $就代表mui,owner就代表window的export屬性,就是一個傳值
     */
    var _userId = 1;
    function converter(userId){
        return +userId;
    }
    owner.getUserId = function(){
        return converter(_userId);
    }
}(mui, window.export = {}));

上面寫法等價於下面這一種,下面可能更易於理解,但都差不多,這樣就進行了封裝
然后在其他地方就可以通過window的全局對象來調用(直接用對象名即可),如:
export.getUserId() //得到的值就是1


因為函數有函數的作用域,所以函數內部定義的變量外部是無法訪問的,那么要想外部訪問到怎么辦呢?
這里可以通過定義一個export對象,將這個對象輸出出去(輸出到window的export對象)
這樣外部就能拿到這個對象里定義的變量(方法)

(function(){
    var _userId = 1;
    var export = {};
    function converter(userId){
        return +userId;
    }
    export.getUserId = function(){
        return converter(_userId);
    }
    window.export = export;
}());

這里如果直接用export._userId,是拿不到這個屬性的,除非你定義為export._userId,這樣就可以,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM