Beruflich habe ich noch nie mit jQuery gearbeitet. Dort kamen Mootools und ExtJS zum Einsatz. Beide Frameworks haben immer gute Dienste geleistet. Ich wollte auch nicht jQuery verwenden, mich interessiert mehr die Implementierung und um den Code innerhalb von jQuery.

Dazu habe ich mir die Entwicklungsversion von jQuery herunter geladen und gleich nach der einzigen Funktion gesucht die ich kenne, der “each”-Funktion. Laut API nimmt die Funktion einen Callback-Parameter entgegen.

.each( function(index, Element) )

Der Code zeigt jedoch einen kleinen Unterschied, es ist auch ein Array-Parameter, an der zweiten Stelle möglich.

.each( function(index, Element),args )

Wird ein Argument übertragen wird dieses statt dem Index und Element an die Methode übergeben. Die Übergabe passiert mit callback.apply, dadurch wird dem Callback ein eigenes this übergeben und die angegebenen Parameter gefüllt.

Wird kein Argument übergeben, erfolgt der Aufruf mit callback.call, und index und Element. Dieser weg ist in der API-Beschreibung auch dokumentiert.

Gut lesbarer Code

Unabhängig von den Implementierungsdetails, ist mir die gute Lesbarkeit des Codes aufgefallen. Die Funktion könnte leicht um ein paar Zeilen verkürzt werden, doch würden diese Änderungen das Verständnis wesentlich erschweren.

Zugriff auf Objekte

Die each-Funktion nimmt nicht nur Arrays entgegen, sondern auch normale Objekte. JavaScript bietet die Möglichkeit, auf Object-Properties, über eine Array Syntax zu zu greifen. Hier ein kleines Beispiel.

var andreas = { name:’Andreas’ }; andreas[‘name’]; => liefert Andreas zurück.

Die möglichen Properties können in einer Schleife abgefragt werden.

for(i in obj){ obj[i]; }

Behandlung von dynamischer Parameteranzahl

In diesem Zusammenhang ist mir die Verwendung einer dynamischen Anzahl von Parametern unter gekommen. Persönlich kannte ich diese Möglichkeit noch nicht, realisiert wird diese über den arguments Parameter.

function foo() {
  for (var i = 0; i < arguments.length; i++) { 
    alert(arguments[i]); 
  } 
}

jQuery auseinander nehmen

Nach der ersten Inspektion wollte ich den Code so weit wie möglich verkleinern. Die Ausführung und Test machte ich dabei mit node.js und Mocha. Dabei sind jedoch keine sehenswerten Ergebnisse heraus gekommen.

Mal sehen was es noch zu entdecken gibt.

Fotoquelle