Nachdem ich eine Weile verwirrt war, bekam ich endlich einen Hinweis. Es ist grob:
Die Codekopie lautet wie folgt:
Erstellen Sie eine anonyme Funktion selbst, entwerfen Sie das Parameterfenster und geben Sie es im Fensterobjekt weiter.
Der Zweck dieses Prozesses ist,
Die Codekopie lautet wie folgt:
Machen Sie Ihren eigenen Code, der nicht durch andere Codes kontaminiert ist, und kann gleichzeitig andere Codes nicht kontaminieren.
JQuery -Kapselung
Also habe ich eine frühere Version von JQuery gefunden, und der Kapselungscode in der Versionsnummer ist 1.7.1 ungefähr der folgende
Die Codekopie lautet wie folgt:
(Funktion (Fenster, undefiniert) {
var jQuery = (function () {console.log ('hello');});
window.jQuery = Fenster. $ = jQuery;
if (typeof define === "function" && define.amd && define.amd.jquery) {
define ("jQuery", [], function () {return jQuery;});
}
})( Fenster );
Darunter
Die Codekopie lautet wie folgt:
console.log ('Hallo');
Es wird verwendet, um zu überprüfen
Die Codekopie lautet wie folgt:
Fenster. $
Oder
Die Codekopie lautet wie folgt:
window.jQuery
So können wir ein ähnliches Paket erstellen
Die Codekopie lautet wie folgt:
(Funktion (Fenster, undefiniert) {
var ph = function () {
}
})(Fenster)
Im Vergleich zu den oben genannten fehlen nur zwei Schritte
1. Definieren Sie die Symbole und globalen Anrufe von JQuery
2. Asynchrone Unterstützung
Also fand ich die frühere JQuery -Kapselung, die in Bezug auf die Methode ungefähr gleich war. .
Die Codekopie lautet wie folgt:
if (typeof window.jQuery == "undefined") {
var jQuery = function () {};
if (typeof $! = "undefined")
JQuery ._ $ = $;
var $ = jQuery;
};
Es ist so magisch, dass wir den vorherigen Schritt jQuery nicht neu schreiben können. Ich musste also sehen, wie die neueste JQuery -Kapselung aussieht. Also eröffnete ich 2.1.1 und stellte fest, dass meine Ideen im Grunde genommen unverändert sind.
Die Codekopie lautet wie folgt:
(Funktion (global, fabrik) {
if (typeof module === "Objekt" && typeof module.exports === "Objekt") {
module.exports = global.document?
Fabrik (global, wahr):
Funktion (w) {
if (! W.Dokument) {
Neuen Fehler werfen ("JQuery erfordert ein Fenster mit einem Dokument");
}
Rückgabefabrik (W);
};
} anders {
Fabrik (global);
}
} (Typeof Fenster!
var jQuery = function () {
console.log ('jQuery');
};
if (typeof define === "function" && define.amd) {
Define ("jQuery", [], function () {
Rückkehr JQuery;
});
};
stungefined = typeof undefined;
if (typeof noglobal === strundefined) {
window.jQuery = Fenster. $ = jQuery;
};
Rückkehr JQuery;
}));
Bei Verwendung eines Browsers
Die Codekopie lautet wie folgt:
typeof module = "undefined"
Die obige Situation wird also bei Verwendung von Node.js usw. beurteilt, was auch darauf hinweist, dass JQuery aufgebläht wird.
Backbone -Paket
Öffnen Sie das Rückgrat und überprüfen Sie es
Die Codekopie lautet wie folgt:
(Funktion (Root, Factory) {
if (typeof define === 'function' && define.amd) {
Definieren Sie (['Unterstrich', 'JQuery', 'Expors'], Funktion (_, $, Exporte) {
root.backBone = factory (root, expors, _, $);
});
} else if (typeof exports! == 'undefined') {
var _ = fordert ('unterstrich');
Fabrik (Wurzel, Exporte, _);
} anders {
root.backBone = factory (root, {}, root._, (root.jQuery || root.zepto || root.ender || root. $));
}
} (this, function (root, backbone, _, $) {
Rückgrat. $ = $;
Rückgrat zurückkehren;
}));
Neben der asynchronen Unterstützung spiegelt es auch seine Abhängigkeit von JQuery und Unterstrich wider.
Die Codekopie lautet wie folgt:
Definieren Sie (['Unterstrich', 'JQuery', 'Expors'], Funktion (_, $, Exporte) {
root.backBone = factory (root, expors, _, $);
});
Es zeigt an, dass das Rückgrat von Anforderungen nativ unterstützt wird.
Paket unterstreichen
Also habe ich mich unterstrichen und stellte fest, dass diese Bibliothek ein anderes Symbol besetzte.
Die Codekopie lautet wie folgt:
(function () {
var root = this;
var _ = function (obj) {
if (obj Instance von _) return obj;
if (! (diese Instanz von _)) gibt neu _ (obj) zurück;
this._wraded = obj;
};
if (typeof exports! == 'undefined') {
if (typeof modul! == 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} anders {
root._ = _;
}
if (typeof define === 'function' && define.amd) {
Define ('Unterstrich', [], function () {
zurückkehren _;
});
}
} .call (this));
Insgesamt sind sie fast anonyme Funktionen, außer dass die CALL () -Methode am Ende verwendet wird.