Domino 9 und frühere Versionen > ND8: Entwicklung - XPages
[Erledigt] Javascript Klasse
Gandhi:
Nur mal was Grundsätzliches/Philosophisches: Wozu sollte ich Klassen simulieren, wenn ich keine brauche?
Es gibt in der weiten Welt (der Programmierung) nichts, wozu ich eine Klasse benötige. Turing-vollständig sind auch prozedurale und funktionale Sprachen.
oxyd21:
Ganz klar 42 ... oder die Antwort auf deine Frage ist die gleiche, wie z.B. auf die Frage 'Wozu existiert die Firma Porsche, wenn der Mensch Beine hat?'
Gandhi:
Im Fall der Firma Porsche ist das eindeutig zu beantworten:
Weil ich mit einem Produkt dieser Firma (in Verbindung mit meinen Beinen) schneller von A nach B komme.
Im Fall der Klassen sieht das anders aus: Klassenorientierte Programmierung ist nicht nachweislich schneller/effizienter als eine anderem Paradigma folgende (lasse mich hierzu gerne korrigieren unter Angabe einer Quelle/Studie).
In JavaScript ist es auf keinen Fall in irgendeiner Weise schneller klassenemulierend zu arbeiten.
Objekt-objektorientiertes, funktionales und Mixin benutzendes Arbeiten ist auf jeden Fall schneller und vor allem auch sauberer, da diese Features von JS unterstützt werden und auch per se keinesfalls weniger mächtig wären.
oxyd21:
Die Beantwortung deiner Frage ist zu kurz gedacht. Warum musst du schneller von A nach B kommen. Macht es dich glücklicher? (abgesehen vom kurzfristigen Hochgefühl das einem über kurz oder lang nicht mehr befriedigt) Wenn du nicht die Möglichkeit hättest schneller die Strecke zu überwinden, hättest du dann auch das Bedürfnis dieses zu tun? Wobei du vielleicht die eingesparte Zeit verwenden könntest um dein nächstes Produkt der Firma zu realisieren.
Warum hat Picasso den Menschen die Nase an die Seite gemalt? Macht es Sie deshalb hübscher? Wäre es nicht viel schöner, er hätte es augenschmeichelnd wie da Vincis Mona Lisa gemalt?
Du hast bestimmt recht, aber in meinem Fall ging es nie um Performanz, sondern nur darum etwas zu lernen. Ich habe m.E. mein Ziel erreicht (auch wenn's keine Mona Lisa geworden ist ;D ).
flaite:
@Gandhi: Das seh ich wiederum als ein ganz anderes Thema.
Warum stellt man Fragen in ein Forum und versucht es nicht selbst herauszufinden ??? Schließlich ist der uns allen eigene Verstand für diese Aufgabenstellungen turing-complete.
Objekt-Orientierung kann durchaus die Arbeit erleichtern.
JavaScript ist aber keine klassen-basierte OO-Sprache sondern eine prototype basierte OO-Sprache.
Und das Verständnis solcher konzeptionellen Feinheiten sind nicht unbedingt akademisch, sondern können die Arbeit erleichtern.
So basiert die erfolgreiche und nicht unbedingt so irrsinnig zeitaufwendige Lösung des Problems in diesen Thread (http://atnotes.de/index.php/topic,52899.0.html) auf Polymorphismus und den Pattern Inversion-of-Control/Dependancy Injection, Command und Factory Method. Neben dem es DANN AUCH TUN.
Das ist jetzt keine persönliche Kritik. Man MUSS SICH NICHT um das Verständnis der Konstruktionspläne einer Programmiersprache bemühen, um sie benutzen zu können. Alles was ich sage ist: Es kann die Arbeit erleichtern.
Wenn der Fragesteller da empirisch vorgeht und es einfach ausprobiert, ist das völlig i.O.. Man kann aber auch Crockford, Douglas, JavaScript: The Good Parts, O'Reilly 2008, ca. 150 Seiten lesen und nach ein bischen Kopfe-Schmerzen verstehen, warum es funktioniert wie es funktioniert.
Kurzes Beispiel was mit Prototype basiertem OO möglich ist. Erweiterung des String Prototypes von JavaScript.
--- Code: ---<html>
<head>
<script>
String.prototype.contains = function(it) { return this.indexOf(it) != -1; };
function containsText(needle, stack) {
if (stack.contains(needle)) {
return stack + " contains " + needle;
} else {
return stack + " does not contain " + needle;
}
}
</script>
</head>
<body>
<form>
<input type="button" value="needle=weih, stack=weihnachten" onClick="alert(containsText('weih', 'weihnachten'))"/>
<input type="button" value="needle=ostern, stack=weihnachten" onClick="alert(containsText('ostern', 'weihnachten'))"/>
</body>
</html>
--- Ende Code ---
Kommentiert dann mal diese Zeile aus:
String.prototype.contains = function(it) { return this.indexOf(it) != -1; };
... und versucht es nochmal.
Gruß Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln