亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

Javascript中的匿名函數與封裝介紹

2024-05-06 16:16:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Javascript中的匿名函數與封裝介紹,本文分析了jQuery 封裝、Backbone 封裝、Underscore 封裝等內容,需要的朋友可以參考下
 

迷惑了一會兒不同JS庫的封裝后,終于有了點頭緒。大致就是:

復制代碼代碼如下:

創建一個自調用匿名函數,設計參數window,并傳入window對象。

而這個過程的目的則是,
復制代碼代碼如下:

使得自身的代碼不會被其他代碼污染,同時也可以不污染其他代碼。

jQuery 封裝

 

于是找了個早期版本的jQuery,版本號是1.7.1里面的封裝代碼大致是下面這樣的

復制代碼代碼如下:

(function( window, undefined ) {
var jQuery = (function() {console.log('hello');});
window.jQuery = window.$ = jQuery;
if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", [], function () { return jQuery; } );
}
})( window );

 

其中的

復制代碼代碼如下:

console.log('hello');

是用以驗證是否按開頭說的這樣工作,于是我們就可以在window中調用jQuery
復制代碼代碼如下:

window.$

或者是
復制代碼代碼如下:

window.jQuery

 

于是我們就可以創建一個類似的封裝

復制代碼代碼如下:

(function(window, undefined) {
    var PH = function() {

 

    }
})(window)


相比于上面只是少了兩步

 

1.定義jQuery的符號及全局調用
2.異步支持

于是找了下更早期的jQuery的封裝,方法上大致是一樣的, 除了。。

復制代碼代碼如下:

if (typeof window.jQuery == "undefined") {
    var jQuery = function() {};
    if (typeof $ != "undefined")
        jQuery._$ = $;

 

    var $ = jQuery;
};

 

很神奇的判斷方法,以致于我們沒有辦法重寫上一步的jQuery。于是只好看看最新的jQuery的封裝是怎樣的。于是就打開了2.1.1,發現除了加了很多功能以外,基本上思想還是不變的

復制代碼代碼如下:

(function(global, factory) {

 

    if (typeof module === "object" && typeof module.exports === "object") {
        module.exports = global.document ?
            factory(global, true) :
            function(w) {
                if (!w.document) {
                    throw new Error("jQuery requires a window with a document");
                }
                return factory(w);
        };
    } else {
        factory(global);
    }

}(typeof window !== "undefined" ? window : this, function(window, noGlobal) {
    var jQuery = function() {
        console.log('jQuery');
    };
    if (typeof define === "function" && define.amd) {
        define("jquery", [], function() {
            return jQuery;
        });
    };
    strundefined = typeof undefined;
    if (typeof noGlobal === strundefined) {
        window.jQuery = window.$ = jQuery;
    };
    return jQuery;
}));


在使用瀏覽器的情況下
復制代碼代碼如下:

typeof module ="undefined"

所以上面的情況是針對于使用Node.js等的情況下判斷的,這也表明jQuery正在變得臃腫。

 

Backbone 封裝

打開了Backbone看了一下

復制代碼代碼如下:

(function(root, factory) {

 

    if (typeof define === 'function' && define.amd) {
        define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
            root.Backbone = factory(root, exports, _, $);
        });

    } else if (typeof exports !== 'undefined') {
        var _ = require('underscore');
        factory(root, exports, _);

    } else {
        root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
    }

}(this, function(root, Backbone, _, $) {
    Backbone.$ = $;
    return Backbone;

}));

 

除了異步支持,也體現了其對于jQuery和underscore的依賴,百

復制代碼代碼如下:

        define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
            root.Backbone = factory(root, exports, _, $);
        });

表明backbone是原生支持requirejs的。

 

Underscore 封裝
于是,又看了看Underscore,發現這個庫又占領了一個符號 _

復制代碼代碼如下:

(function() {
    var root = this;
    var _ = function(obj) {
        if (obj instanceof _) return obj;
        if (!(this instanceof _)) return new _(obj);
        this._wrapped = obj;
    };

 

    if (typeof exports !== 'undefined') {
        if (typeof module !== 'undefined' && module.exports) {
            exports = module.exports = _;
        }
        exports._ = _;
    } else {
        root._ = _;
    }

    if (typeof define === 'function' && define.amd) {
        define('underscore', [], function() {
            return _;
        });
    }
}.call(this));


總體上也和差不多都是匿名函數,除了最后用的是call()方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频在线免费| 久久精品国产清自在天天线| 欧美精品videofree1080p| 久久亚洲精品小早川怜子66| 91产国在线观看动作片喷水| 日av在线播放中文不卡| 性日韩欧美在线视频| 奇米影视亚洲狠狠色| 久久精品国产视频| 色偷偷91综合久久噜噜| 日韩视频免费中文字幕| 久久精品一本久久99精品| 国产精品久久久久久久久久三级| 在线视频欧美日韩精品| 夜夜嗨av色一区二区不卡| 中文字幕av一区二区| 国产精品久久久久国产a级| 亚洲女人天堂av| 国产精品夜色7777狼人| 欧美极品少妇xxxxⅹ免费视频| 亚洲**2019国产| 亚洲第一精品电影| 欧美性猛交xxxx乱大交蜜桃| 日韩av电影手机在线| 亚洲片av在线| 亚洲春色另类小说| 欧美三级欧美成人高清www| 日韩视频在线一区| 欧美精品一区二区三区国产精品| 欧美精品成人在线| 91久久精品久久国产性色也91| 成人av资源在线播放| 中文字幕欧美日韩精品| 国产欧美日韩最新| 91精品国产91久久久久久久久| 亚洲精美色品网站| 欧美老妇交乱视频| 欧美巨猛xxxx猛交黑人97人| 欧美一区二区.| 青青草99啪国产免费| 欧美电影免费在线观看| 国产综合在线看| 久久资源免费视频| 欧美成aaa人片在线观看蜜臀| 中文字幕av日韩| 亚洲国产精品一区二区三区| 亚洲欧美一区二区三区四区| 在线视频日本亚洲性| 亚洲奶大毛多的老太婆| 亚洲电影中文字幕| 亚洲精品日韩欧美| 国产va免费精品高清在线| 亚洲视频欧洲视频| 成人乱色短篇合集| 久久久久亚洲精品国产| 成人午夜在线影院| 超碰日本道色综合久久综合| 中文字幕欧美日韩在线| 中文欧美日本在线资源| 久久91亚洲精品中文字幕| 久久这里有精品| 久久成人在线视频| 国产欧美日韩中文| 1769国产精品| 成人黄色av播放免费| 欧美精品激情在线| 91av成人在线| 欧美黑人性猛交| 欧美午夜精品在线| 欧美成人h版在线观看| 亚洲自拍欧美另类| 性欧美xxxx视频在线观看| 欧美精品www在线观看| 奇米四色中文综合久久| 国产在线视频欧美| 久久久久久国产精品美女| 欧美视频免费在线| 欧美劲爆第一页| 国产精品福利网站| 这里只有精品视频| 狠狠躁天天躁日日躁欧美| 韩国v欧美v日本v亚洲| 久热在线中文字幕色999舞| 97超级碰在线看视频免费在线看| 日本成人免费在线| 精品国产一区二区三区四区在线观看| 亚洲女人天堂网| 日韩激情第一页| 国模吧一区二区三区| 久久免费精品视频| 亚洲九九九在线观看| 视频直播国产精品| 日韩精品免费在线视频观看| 国产综合在线观看视频| 久久久欧美精品| 精品国产31久久久久久| 中文字幕亚洲无线码在线一区| 久久久国产精品免费| 久久九九全国免费精品观看| 日韩av网站在线| www.久久久久久.com| 日本午夜在线亚洲.国产| 国产精品自拍小视频| 国产不卡av在线| 久久精品99久久久久久久久| 欧美日韩激情美女| 日韩在线观看免费av| 亚洲美腿欧美激情另类| 精品自拍视频在线观看| 国产精品第3页| 国产欧美日韩高清| 国产精品自产拍在线观看中文| 日本欧美国产在线| 久久人人爽人人| 久久成年人免费电影| 欧美国产日韩中文字幕在线| 国产精品69精品一区二区三区| 亚洲欧美日韩精品久久| 日本老师69xxx| 国产噜噜噜噜噜久久久久久久久| 日韩电影在线观看永久视频免费网站| 久热精品在线视频| xvideos亚洲人网站| 中文在线资源观看视频网站免费不卡| 精品国产1区2区| 国产精品av免费在线观看| 91亚洲精品一区二区| 日韩精品久久久久| 久久久久久久电影一区| 日韩专区中文字幕| 欧美—级a级欧美特级ar全黄| 最近中文字幕mv在线一区二区三区四区| 中文.日本.精品| 亚洲高清久久久久久| 亚洲毛片在线观看.| 国内免费久久久久久久久久久| 亚洲男人7777| 狠狠久久五月精品中文字幕| 日韩av三级在线观看| 色琪琪综合男人的天堂aⅴ视频| 欧美丰满少妇xxxxx做受| 国产在线精品播放| 亚洲黄色有码视频| 永久免费毛片在线播放不卡| 97免费视频在线播放| 日韩中文字幕视频在线观看| 777国产偷窥盗摄精品视频| 日韩中文字幕网| 欧美午夜激情小视频| 国产精品日韩在线一区| 日本a级片电影一区二区| 亚洲天堂影视av| 午夜精品久久久久久久白皮肤| 精品美女国产在线| 国产精品久久久久久久久久免费| 亚洲日韩第一页| 欧美丝袜一区二区三区| 91地址最新发布| 亚洲国产成人久久综合一区| 欧美性xxxxx极品| 欧美高清在线播放| 久久久人成影片一区二区三区观看| **欧美日韩vr在线| 国产精品一区二区在线|