最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript 閉包詳解

 更新時(shí)間:2015年02月15日 09:55:37   投稿:hebedich  
這篇文章主要詳細(xì)介紹了javascript 閉包的相關(guān)資料,十分詳盡,需要的朋友可以參考下

javascript 閉包是一個(gè)很有趣的東東??戳诵┫嚓P(guān)資料http://m.fzitv.net/article/29472.htm,對(duì)其印象最深刻的是:實(shí)現(xiàn)了public 和private。

創(chuàng)建一個(gè)非匿名閉包最簡(jiǎn)單的語(yǔ)法是:

復(fù)制代碼 代碼如下:

var obj = (function(){//各種代碼  });

閉包最經(jīng)典的例子:

復(fù)制代碼 代碼如下:

var makeCounter = (function () {
        var i = 1;
        this.test=function(){
            console.log(i);
            i++;
        }
        return this;
    });
    var obj = makeCounter();
    obj.test(); // 1
    obj.test(); // 2
    var obj1 = makeCounter();
    obj1.test(); // 1
    obj1.test(); // 2

private 與 public :

復(fù)制代碼 代碼如下:

var makeCounter= (function () {
        var i = 1;
        //這貨是private的
        function log(){
            console.log(i);
            i++;
        }
        //這貨是public的
        this.test(){
            log();
        }
        return this;
    });
    var obj = makeCounter();
    obj.test(); // 1
    obj.test(); // 2
    obj.log(); //undefined   

自執(zhí)行函數(shù):

  第一次看到這樣的代碼時(shí)的感覺(jué)是:好高級(jí);

復(fù)制代碼 代碼如下:

var obj = (function(window){
      //各種代碼
}(window));

  然后google了下,發(fā)現(xiàn)他們經(jīng)常都會(huì)這樣寫:

復(fù)制代碼 代碼如下:

var obj= (function () {
        var i = 1;
        this.test=function(){
            console.log(i);
            i++;
        }
        return this;
    }());
    obj.test(); // 1
    obj.test(); // 2

     最簡(jiǎn)單的理解,程序員偷懶把兩步寫成了一步。

復(fù)制代碼 代碼如下:

    //這是一個(gè)函數(shù)。它應(yīng)該這樣用obj()
    var makeCounter = function () {
        //各種代碼
    }
    //這是一個(gè)對(duì)象。它類似于 var obj = makeCounter();
    var obj = (function () {
        //各種代碼
    }());

  它也可以有參數(shù):

復(fù)制代碼 代碼如下:

    var output = "new test";
    var obj = (function (msg) {
        this.test = function(){
            console.log(msg);
        }
        return this;
    }(output));
    obj.test();

  它還可以更復(fù)雜更高級(jí)點(diǎn):

復(fù)制代碼 代碼如下:

var output = "new test";
    var obj = (function (obj, msg) {
        //這貨也是私有的。類似obj.i(!=obj.i),卻又不是obj.i(因?yàn)橥獠坎豢稍L問(wèn))。
        var i = 1;
        //private
        function log() {
            console.log(i + " : " + msg);
            i++;
        }
        //public
        obj.test = function () {
            log();
        }
        return obj;
    }(obj, output));
    obj.test(); // 1 : new test
    obj.i = 100;
    //i沒(méi)被改變
    obj.test(); // 2 : new test

初次見面,留下了很深刻的印象。閉包的使用,實(shí)現(xiàn)了狀態(tài),屬性的保持;避免了全局變量滿屏飛舞;結(jié)束了變量老是被重定義,重賦值的尷尬局面。它還可以將一個(gè)對(duì)象分部到多個(gè)js文件。實(shí)在是太好了。

上面所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • JS實(shí)現(xiàn)網(wǎng)頁(yè)滾動(dòng)條感應(yīng)鼠標(biāo)變色的方法

    JS實(shí)現(xiàn)網(wǎng)頁(yè)滾動(dòng)條感應(yīng)鼠標(biāo)變色的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)網(wǎng)頁(yè)滾動(dòng)條感應(yīng)鼠標(biāo)變色的方法,實(shí)例分析了javascript針對(duì)鼠標(biāo)事件的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • JavaScript 九種跨域方式實(shí)現(xiàn)原理

    JavaScript 九種跨域方式實(shí)現(xiàn)原理

    這篇文章主要介紹了JavaScript 九種跨域方式實(shí)現(xiàn)原理,什么是跨域,以及有哪幾種跨域方式,這是本文要探討的內(nèi)容。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 基于JavaScript實(shí)現(xiàn)驗(yàn)證碼功能

    基于JavaScript實(shí)現(xiàn)驗(yàn)證碼功能

    這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)驗(yàn)證碼功能的相關(guān)資料
    2017-04-04
  • JavaScript獲得當(dāng)前網(wǎng)頁(yè)來(lái)源頁(yè)面(即上一頁(yè))的方法

    JavaScript獲得當(dāng)前網(wǎng)頁(yè)來(lái)源頁(yè)面(即上一頁(yè))的方法

    這篇文章主要介紹了JavaScript獲得當(dāng)前網(wǎng)頁(yè)來(lái)源頁(yè)面(即上一頁(yè))的方法,涉及javascript中document.referrer方法的使用技巧,需要的朋友可以參考下
    2015-04-04
  • 詳解JS中的this、apply、call、bind(經(jīng)典面試題)

    詳解JS中的this、apply、call、bind(經(jīng)典面試題)

    JS中的this、apply、call、bind是一道經(jīng)典面試題,最好還是了解一下 this 的指向和 call、apply、bind 三者的區(qū)別。下面就跟隨腳本之家小編一起學(xué)習(xí)this、apply、call、bind的知識(shí)吧
    2017-09-09
  • 利用js編寫響應(yīng)式側(cè)邊欄

    利用js編寫響應(yīng)式側(cè)邊欄

    這篇文章主要為大家詳細(xì)介紹了利用js編寫響應(yīng)式側(cè)邊欄的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • javascript 另一種圖片滾動(dòng)切換效果思路

    javascript 另一種圖片滾動(dòng)切換效果思路

    把圖片們用ul之類的包起來(lái),并設(shè)置float。然后設(shè)置這個(gè)ul本身為absolute定位,其父標(biāo)簽用relative定位。通過(guò)設(shè)置ul的left或top值,實(shí)現(xiàn)圖片隊(duì)列的滾動(dòng)效果
    2012-04-04
  • js學(xué)習(xí)階段總結(jié)(必看篇)

    js學(xué)習(xí)階段總結(jié)(必看篇)

    下面小編就為大家?guī)?lái)一篇js學(xué)習(xí)階段總結(jié)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • JavaScript 事件入門知識(shí)

    JavaScript 事件入門知識(shí)

    這篇文章主要介紹了JavaScript 事件入門知識(shí),需要的朋友可以參考下
    2015-04-04
  • JavaScript 事件屬性綁定帶參數(shù)的函數(shù)

    JavaScript 事件屬性綁定帶參數(shù)的函數(shù)

    在JavaScript中,為了實(shí)現(xiàn)表現(xiàn)和控制相分離,可以通過(guò)0級(jí)的DOM事件屬性或者2級(jí)的事件模型來(lái)實(shí)現(xiàn),不過(guò)這兩者在針對(duì)某個(gè)事件類型調(diào)用相應(yīng)的事件句柄的時(shí)候,不能給事件句柄提供參數(shù),也就是說(shuō),事件屬性的值只能是一個(gè)函數(shù)引用。
    2009-03-03

最新評(píng)論

闽侯县| 白城市| 安岳县| 渭源县| 桑植县| 乌鲁木齐市| 南昌县| 平武县| 滦平县| 双流县| 吉隆县| 安岳县| 永丰县| 卫辉市| 兰溪市| 彭山县| 南澳县| 平度市| 富阳市| 苍山县| 巴林右旗| 新宾| 沙田区| 洞头县| 房产| 澎湖县| 广河县| 册亨县| 镇宁| 罗田县| 陆川县| 涿鹿县| 太仓市| 安宁市| 平果县| 汤阴县| 泰来县| 石渠县| 兴安县| 巴里| 平远县|