Eingehende Analyse der Kernfunktionen in jquery
Zu den Kernfunktionen gehören:
Wie jquery definiert ist, wie man es aufruft und wie man es erweitert. Die Beherrschung der Implementierung der Kernmethoden ist der Schlüssel zum Verständnis des jQuery-Quellcodes. Hier wurde plötzlich alles klar.
1, wie man den Eingang definiert
// Definieren Sie eine lokale Kopie von jQuery
var jQuery = function( selector, context ) {
// Das jQuery-Objekt ist eigentlich nur der „erweiterte“ Init-Konstruktor
return new jQuery.fn.init( selector, context, rootjQuery ); // Das jQuery-Objekt ist eigentlich nur die Konstruktorfunktion jQuery.prototype.init erweiterte Version
}
2, der jQuery-Prototyp und seine Beziehung zu jQuery.fn.init
// Definieren Sie die Objektmethode, das heißt, sie kann nur über $("xx") aufgerufen werden.
jQuery.fn = jQuery.prototype = {
init:function( selector, context, rootjQuery ) {
return jQuery.makeArray( selector, this );
}
Es gibt viele andere Attribute und Methoden,
Zu den Attributen gehören: jquery, Konstruktor, Selektor, Länge
Zu den Methoden gehören: toArray,get, pushStack,each, ready,slice, first,last,eq, map,end, push, sort, splice
…
}
// jQuery .prototype wird jQuery.prototype.init.prototype zur späteren Instanziierung zugewiesen
// Geben Sie der Init-Funktion den jQuery-Prototyp zur späteren Instanziierung
jQuery.fn.init.prototype = jQuery.fn ;
Das heißt, $("xx") hat eine Instanzmethode und kann aufgerufen werden. (Rufen Sie die unter jQuery.prototype definierte Methode auf)
Warum gibt jQuery das jQuery.fn.init-Objekt zurück?
jQuery = function( selector, context ) {
/ / Das jQuery-Objekt ist eigentlich nur der „erweiterte“ Init-Konstruktor
return new jQuery.fn.init( selector, context, rootjQuery );
}
jQuery.fn = jQuery.prototype = {
…
}
jQuery.fn.init.prototype = jQuery.fn;
Ähnliche Fragen zum Stackoverflow finden:
http://stackoverflow.com/questions/4754560/help-understanding-jquerys-jquery-fn-init-why-is-init-in-fn
Und das
http://stackoverflow.com/questions/1856890/why-does-jquery-use-new-jquery-fn-init-for-creating-jquery-object-but-i-can/1858537#1858537
Ich glaube, der Code ist auf diese Weise geschrieben, damit das Schlüsselwort new nicht jedes Mal erforderlich ist, wenn Sie ein neues jQuery-Objekt instanziieren, und um auch die Logik hinter der Objektkonstruktion an den Prototyp zu delegieren der zu verwendende Bibliotheksreiniger und letzterer, um die Initialisierungslogik sauber an einem Ort zu halten und den rekursiven Aufruf von init zu ermöglichen, um ein Objekt zu erstellen und zurückzugeben, das korrekt mit den übergebenen Argumenten übereinstimmt.
3, erweitert erweitern Objektmethode und statisches Methodenprinzip
jQuery.extend = jQuery.fn.extend = function() {
var target = arguments[0] || {};
return target;
}
Es ist praktisch, Extend zu verwenden, was nichts anderes als $.extend({}) und $.fn.extend({}); Wenn Sie fn sehen, wäre es großartig, wenn Sie jQuery.prototype verstehen und daran denken könnten.
Sehen Sie sich diesen Bereich noch einmal an:
$.extend ->this ist $-> this.aa()
$.fn.extend-> ;this ist $.fn-> this.aa()
Details zur Erweiterungsimplementierung beigefügt:
Nur Verwendungsszenarien:
1, einige Funktionen erweitern
Nur ein Parameter. Zum Beispiel: $.extend({f1:function(){},f2:function(){},f3:function(){}})
2, mehrere Objekte zum ersten Objekt zusammenführen
(1) Flache Kopie, der erste Parameter ist das Zielobjekt. Zum Beispiel
var a = {name:“hello“}
var b = {age:30}
$.extend(a,b);//a = {name:“hello“,age:30}
(2) Deep Copy, der erste Parameter ist TRUE und der zweite Parameter ist das Zielobjekt. Zum Beispiel
var a = {name:{job:“it“}};
var b = {name:{age: 30 }};
// $ .extend(a,b);
$.extend(true,a,b);
console.log(a);
jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // 是不是深复制 Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // 不是对象类型 Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction(target) ) { target = {}; } // 扩展插件的情况 extend jQuery itself if only one argument is passed if ( length === i ) {//$.extend({f1:function(){},f2:function(){},f3:function(){}}) target = this;//this是$,或是$.fn --i; } for ( ; i < length; i++ ) {//可能有多个对象扩展到第一个对象上 // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) {//options是一个对象 // Extend the base object for ( name in options ) { src = target[ name ]; //src是target里已经存在的value(也可能不存在) copy = options[ name ];//copy是待合入的一个value // 防止循环引用 Prevent never-ending loop if ( target === copy ) {//例如:var a={};$.extend(a,{name:a});//可能导致循环引用 continue; } // if是深复制else是浅复制 Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray(src) ? src : []; } else { clone = src && jQuery.isPlainObject(src) ? src : {}; } // 亮了,直至剥离至最深一层非对象类型,而且是逐个。Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy;//target[ name ] = options[ name ]; } } } } // Return the modified object return target; };
jQuery.extend({…}) Analyse
Schauen Sie sich an, wie es geschrieben ist
jQuery.extend({
prop:““
Methode : function(){}
});
Es ist ersichtlich, dass es sich bei diesen Methoden um statische Eigenschaften und Methoden von jQuery (dh Tool-Methoden) handelt, die Benutzern direkt bereitgestellt werden können Zukünftig auch innerlich einsetzbar.
Die konkret implementierten Werkzeugattribute und -methoden sind (auch gekennzeichnet, welche intern verwendet werden)
jQuery.extend({
expando : Generiere einen eindeutigen JQ String (intern)
noConflict() : Konflikte verhindern
isReady : Ob das DOM wird geladen (intern)
readyWait: Zähler, auf wie viele Dateien gewartet werden soll (intern)
holdReady(): Verschiebung der DOM-Triggerung
ready(): Bereiten Sie sich auf die DOM-Triggerung vor
isFunction() : Ob es eine Funktion ist
isArray() : Ob es ein Array ist
isWindow() : Ob es ein Fenster ist
isNumeric() : Ist es Number
type() : Bestimmen Sie den Datentyp von
isPlainObject() : Ob es sich um ein Objektargument
isEmptyObject() : Ob es sich um ein leeres Objekt handelt
error() :
Wirft eine Ausnahme aus
parseHTML() : Knoten analysieren
parseJSON(): JSON analysieren
par seXML (): XML analysieren
noop(): Leere Funktion
globalEval(): Globales JS analysieren
camelCase() : Camel Case konvertieren
nodeName ( ) : Ob es sich um den angegebenen Knotennamen handelt (intern)
every() : Durchlaufen der Sammlung
trim() : Entfernen Sie führende und nachgestellte Leerzeichen
makeArray() : Array-ähnliches Array in echtes Array konvertieren
inArray() : Array-Version indexOf
merge() : Arrays zusammenführen
grep() : Neues Array filtern
map() : Neues Array zuordnen
guid : Eindeutiger Bezeichner (intern)
Proxy() : Dies ändern zeigen auf
access() : Multifunktionswertoperation (intern)
now() : Aktuelle Zeit
swap() : CSS-Swap (intern)
});
Das obige ist der detaillierte Inhalt vonEingehende Analyse der Kernfunktionen in jquery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Ausführliche Erklärung des Oracle-Fehlers 3114: Um ihn schnell zu beheben, sind spezifische Codebeispiele erforderlich. Bei der Entwicklung und Verwaltung von Oracle-Datenbanken stoßen wir häufig auf verschiedene Fehler, unter denen Fehler 3114 ein relativ häufiges Problem ist. Fehler 3114 weist normalerweise auf ein Problem mit der Datenbankverbindung hin, das durch einen Netzwerkfehler, einen Stopp des Datenbankdienstes oder falsche Einstellungen der Verbindungszeichenfolge verursacht werden kann. In diesem Artikel wird die Ursache des Fehlers 3114 ausführlich erläutert und wie dieses Problem schnell gelöst werden kann. Außerdem wird der spezifische Code angehängt

[Analyse der Bedeutung und Verwendung von Mittelpunkt in PHP] In PHP ist Mittelpunkt (.) ein häufig verwendeter Operator, der zum Verbinden zweier Zeichenfolgen oder Eigenschaften oder Methoden von Objekten verwendet wird. In diesem Artikel befassen wir uns eingehend mit der Bedeutung und Verwendung von Mittelpunkten in PHP und veranschaulichen sie anhand konkreter Codebeispiele. 1. String-Mittelpunkt-Operator verbinden Die häufigste Verwendung in PHP ist das Verbinden zweier Strings. Indem Sie . zwischen zwei Saiten platzieren, können Sie diese zu einer neuen Saite zusammenfügen. $string1=&qu

Analyse der neuen Funktionen von Win11: So überspringen Sie die Anmeldung bei einem Microsoft-Konto. Mit der Veröffentlichung von Windows 11 haben viele Benutzer festgestellt, dass es mehr Komfort und neue Funktionen bietet. Einige Benutzer möchten jedoch möglicherweise nicht, dass ihr System an ein Microsoft-Konto gebunden ist, und möchten diesen Schritt überspringen. In diesem Artikel werden einige Methoden vorgestellt, mit denen Benutzer die Anmeldung bei einem Microsoft-Konto in Windows 11 überspringen können, um ein privateres und autonomeres Erlebnis zu erreichen. Lassen Sie uns zunächst verstehen, warum einige Benutzer zögern, sich bei ihrem Microsoft-Konto anzumelden. Einerseits befürchten einige Benutzer, dass sie

Wormhole ist führend in der Blockchain-Interoperabilität und konzentriert sich auf die Schaffung robuster, zukunftssicherer dezentraler Systeme, bei denen Eigentum, Kontrolle und erlaubnislose Innovation im Vordergrund stehen. Die Grundlage dieser Vision ist das Bekenntnis zu technischem Fachwissen, ethischen Grundsätzen und Community-Ausrichtung, um die Interoperabilitätslandschaft mit Einfachheit, Klarheit und einer breiten Palette von Multi-Chain-Lösungen neu zu definieren. Mit dem Aufkommen wissensfreier Nachweise, Skalierungslösungen und funktionsreicher Token-Standards werden Blockchains immer leistungsfähiger und Interoperabilität wird immer wichtiger. In dieser innovativen Anwendungsumgebung eröffnen neuartige Governance-Systeme und praktische Funktionen beispiellose Möglichkeiten für Assets im gesamten Netzwerk. Protokollentwickler setzen sich nun mit der Frage auseinander, wie sie in dieser aufstrebenden Multi-Chain agieren sollen

Titel: jQuery-Tipps: Ändern Sie schnell den Text aller Tags auf der Seite. In der Webentwicklung müssen wir häufig Elemente auf der Seite ändern und bedienen. Wenn Sie jQuery verwenden, müssen Sie manchmal den Textinhalt aller a-Tags auf der Seite gleichzeitig ändern, was Zeit und Energie sparen kann. Im Folgenden wird erläutert, wie Sie mit jQuery den Text aller Tags auf der Seite schnell ändern können, und es werden spezifische Codebeispiele angegeben. Zuerst müssen wir die jQuery-Bibliotheksdatei einführen und sicherstellen, dass der folgende Code in die Seite eingefügt wird: <

Titel: Verwenden Sie jQuery, um den Textinhalt aller Tags zu ändern. jQuery ist eine beliebte JavaScript-Bibliothek, die häufig zur Verarbeitung von DOM-Operationen verwendet wird. Bei der Webentwicklung müssen wir häufig den Textinhalt des Link-Tags (eines Tags) auf der Seite ändern. In diesem Artikel wird erläutert, wie Sie mit jQuery dieses Ziel erreichen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die jQuery-Bibliothek in die Seite einführen. Fügen Sie den folgenden Code in die HTML-Datei ein:

Aus Platzgründen folgt hier ein kurzer Artikel: Apache2 ist eine häufig verwendete Webserver-Software und PHP ist eine weit verbreitete serverseitige Skriptsprache. Beim Erstellen einer Website stößt man manchmal auf das Problem, dass Apache2 die PHP-Datei nicht korrekt analysieren kann, was dazu führt, dass der PHP-Code nicht ausgeführt werden kann. Dieses Problem wird normalerweise dadurch verursacht, dass Apache2 das PHP-Modul nicht richtig konfiguriert oder das PHP-Modul nicht mit der Version von Apache2 kompatibel ist. Im Allgemeinen gibt es zwei Möglichkeiten, dieses Problem zu lösen: Die eine ist

Wie kann man feststellen, ob ein jQuery-Element ein bestimmtes Attribut hat? Wenn Sie jQuery zum Betreiben von DOM-Elementen verwenden, stoßen Sie häufig auf Situationen, in denen Sie feststellen müssen, ob ein Element ein bestimmtes Attribut hat. In diesem Fall können wir diese Funktion einfach mit Hilfe der von jQuery bereitgestellten Methoden implementieren. Im Folgenden werden zwei häufig verwendete Methoden vorgestellt, um festzustellen, ob ein jQuery-Element über bestimmte Attribute verfügt, und um spezifische Codebeispiele anzuhängen. Methode 1: Verwenden Sie die Methode attr() und den Operator typeof //, um zu bestimmen, ob das Element ein bestimmtes Attribut hat
