tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Sven Mintel
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
905
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Munch Munch ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    52
    hi,

    also ich versuch jetzt seit einiger Zeit die Methodik die hinter jQuery steckt herauszufinden. Der Grund: Ich denke das die Jungs wissen wie man am effektivsten mit JavaScript Programmiert und möchte schauen, ob man den Stiel auch für eigene Projekte nutzen kann.
    Dafür hab ich mich erstmal mit Prototypen beschäftigt und anschließend eingehend den Quellcode von jQuery Core unter http://code.jquery.com/jquery-1.4.2.js studiert. Ich meine das Prinzip auch verstanden zu haben, allerdings ist es mir nicht möglich es nach zu bilden. Dafür hab ich folgendes gemacht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    var $=function() { return new $.fn.init(); };
     
    $.fn = $.prototype = {
        init: function(obj) {
            alert("init");
            return(this);
        },
        test: function() {
            alert("Test OK");
        }
    };
    //So gehts leider auch nicht:
    $.prototype.test2 = function() {
        alert("Test2 OK");
    };
     
     
    function main() {   
        $();        //Geht
        $.fn.test();    //Geht
        $().test(); //Erste Funktion geht, zweite nicht
        $.test();   //Geht nicht
        $().test2();    //Geht nicht
    }

    Nach meinem verständnis müsste die $-Funktion durch das Prototyp argument die funktion test "erben", allerdings geschieht das nicht. Ich kann einfach nicht direkt auf die Funktion zugreifen, auch nicht wenn ich nur per $.test() darauf zugreife. Woran liegt das? Was mach ich falsch?

    Grüße
    Jan
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin Jan,

    folgende, vielleicht etwas unscheinbare, aber wichtige Zeile hast du nicht berücksichtigt:

    Code :
    1
    2
    
    // Give the init function the jQuery prototype for later instantiation
    jQuery.fn.init.prototype = jQuery.fn;

    Wenn du diese in dein Skript einfügst, funktioniert es wie gewünscht, bis auf dies:
    Code :
    1
    
    $.test();

    ....denn $ besitzt keine Methode namens test(), es ist eine Methode seines Members prototype.

    Du kommst dort möglicherweise durcheinander mit anderen Dingen, die du über das Wörtchen prototype gelesen hast, es spielt ja eine spezielle Rolle in JS.

    Damit kannst du Objekte erweitern.
    Aber:
    greifst du so zu:
    Code :
    1
    
    $.irgendwas()
    ...liefert das $ lediglich das Function-Objekt, diesem Funktionsobjekt wurde per prototype lediglich ein Member zugewiesen mit dem Namen prototype.
    Um das $-Funktions-Objekt echt per prototype zu Erweitern, müsstest du dies auch über das den Prototype des Function-Objektes machen:

    Code :
    1
    
    Function.prototype.foo='bar';
    ...was sich auf sämtliche Funktionen auswirken würde.

    greifst du aber so zu:
    Code :
    1
    
    $().irgendwas()
    ...liefert dir $() ein Object-Objekt ...., dieses besitzt die Eigenschaften, um die du es erweitert hast...das Wörtchen "prototype" hat dort seine Wirkung entfaltet, die es in JS von Hause aus hat.
    Munch bedankt sich. 

  3. #3
    Munch Munch ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    52
    Hi,

    doch noch ne Frage...

    Gibt es für diese Art der JavaScript Programmierung irgendeinen Namen, so das ich mich da mal weiter einlesen kann?

    Mich würden auch Bücher interressieren wo man sowas nachlesen könnte.

    Grüße
    Jan
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Mmmh, ein spezieller Name dafür ist mir noch nicht begegnet, javascript+oop dürfte dir guten Lesestoff liefern.
    Eine gute Anlaufstelle dürfte auf jeden Fall Douglas Crockford sein, Bücher hat er auch geschrieben.
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 20.10.10, 20:47
  2. Antworten: 9
    Letzter Beitrag: 22.07.10, 15:51
  3. jQuery: jQuery auf AJAX Response anwenden
    Von pointsdächster im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.04.10, 01:15
  4. jQuery: Via Selektor auf div zugreifen
    Von qde im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 20.02.09, 17:21
  5. jQuery Selektor (dynamische Auswahl)
    Von suntrop im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 26.09.08, 18:29

Stichworte