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:
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
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:
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