gruss in die Runde,
welches *wording* beschreibt das vorgehen im folgenden einfach
gehaltenen beispiel am besten: Functor? || MixIn? || Interface?
code z.b. durch *copy and paste* der jconsole zur verfuegung
stellen - [http:jconsole.com]:
// unterstuetzender code:
document.getElmPosAbsolute = (function (elm) {
var x = 0, y = 0;
if (elm && elm.offsetParent) {
x = elm.offsetLeft;
y = elm.offsetTop;
elm = elm.offsetParent;
while (elm) {
x = x + elm.offsetLeft;
y = y + elm.offsetTop;
elm = elm.offsetParent;
}
}
return { "left":x, "top":y };
});
// *fragestellungsspezifischer* code:
var NodeFunctor = (function () { // Functor||MixIn||Interface?
this.getPosAbsolute = (function () {
return document.getElmPosAbsolute(this);
});
});
var elm = document.getElementsByTagName("textarea")[0];
// welchen namen gibt man diesem spezifischen anwendungsfall?
NodeFunctor.call(elm); // Functor? || MixIn? || Interface?
var posDocMethod = document.getElmPosAbsolute(elm);
var posElmMethod = elm.getPosAbsolute();
print("posDocMethod.left : " + posDocMethod.left);
print("posElmMethod.left : " + posElmMethod.left);
print("posDocMethod.top : " + posDocMethod.top);
print("posElmMethod.top : " + posElmMethod.top);
print("elm : " + elm);
props(elm);
print("elm.constructor : " + elm.constructor);
print("elm.prototype : " + elm.prototype);
und gleich die naechste frage - warum benutzt keines der grossen
frameworks wie z.b. die YUI-lib bzw. keine der kleinen populaeren
bibliotheken wie jQuery dieses auf spaeter bindung beruhende
delegationskonzept, um die zwei in der syntax so unterschiedlichen
schreibkonvention - an namensraeume gebundene statische/generische
methoden versus *chainable* methoden irgendwelcher objekt-wrapper -
miteiander zu versöhnen?
gerade das permanennte neueintueten bzw. das erzeugen irgendwelcher
instanzen im hintergrund geht doch auf kosten der leistungsfaehigkeit
z.b von jQuery und frisst in der anwendung den anfaeglichen vorteil
ausdrucksstarken kurzen codes gleich wieder auf.
da nimmt man doch lieber die gefuehlten nachteile einer *old school*-
schreibweise wie z.b. in der anwendung der YUI-lib in kauf, wissend,
dass dort bei DOM-manipulationen nicht permanent teuer im hintergrund
gearbeitet wird - oder etwa nicht?
warum *wrappt* jQuery ueberhaupt, wo es doch zmindest fuer mich den
anschein hat, dass sich *chainability* einfacher und eben auch
billiger mit Funkturen?/Interfaces? erreichen liesse? warum nutzt die
YUI-lib nicht diesen ansatz, um auf einfache weisse schon vorhandene
statisch/generisch implementierte funktionalitaet zusaetzlich ueber
diesen ansatz *chainable* zur verfuegung zu stellen?
hab' ich was verpasst? etwas nicht richtig verstanden? blamier ich
mich mit dieser fragerei gerade bis auf die knochen?
so long - peterS. - pseliger@gmx.net
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]