Klassen und Objekte???
Tobias
- javascript
Hi,
ich arbeite mich gerade mit SelfHTML in JavaScript ein, kenne aber Java sehr gut. Ich weiß nicht, ob es an SelfHTML oder an JavaScript liegt, aber ich finde die begriffliche Abgrenzung zwischen Klasse und Objekt als nicht sehr gelungen.
Wenn ich lese:
"Das Objekt Boolean ist zum Erzeugen von JavaScript-Standardwerten true (wahr) und false (falsch) gedacht.",
dreht sich mir irgendwie der Magen um. Warum wird der Begriff Konstruktor nicht benutzt, warum werden nicht zumindest statische Methoden erwähnt? Klasse und Objekt werden sehr oft synonym benutzt, dadurch leidet die Klarheit. Oder ist das extra so geschrieben worden?
Als weiteres Beispiel: window
window.open() würde ich als statische Methode der Klasse window ansehen, während ein Objekt window (oder self) ein Objekt (eine Instanz) der Klasse window ist.
Mir ist klar, dass man an JavaSscript keine zu strengen (OO)-Anforderungen stellen darf, aber...
Um nicht falsch verstanden zu werden: Ich finde SelfHTML grossartig, zumal es auch umsonst ist, aber dieser Aspekt stört mich denn doch ziemlich.
Da ich dieses Forum auch sehr selten verfolgt habe, kann es natürlich sein, dass Ihr dieses Thema schon längst durchgekaut habt...
Tobias
Hi,
kenne aber Java sehr gut. Ich weiß nicht, ob es an SelfHTML oder an JavaScript liegt,
...oder daran, dass Java und JavaScript nichts miteinander zu tun haben, Du aber versuchst, Java-Details auf JavaScript zu projezieren? ;-) (Ja, ich weiß, die Begriffe sind nicht Java-spezifisch.)
Warum wird der Begriff Konstruktor nicht benutzt, warum werden nicht zumindest statische Methoden erwähnt?
Weil es mangels signifikantem Unterschied unwichtig ist? Ja, spätestens wenn andere OO-Sprachen erlernt werden, ist der Unterschied wichtig. Ich würde SelfHTML aber nicht als OO-Lehrbuch betrachten - es hat einfach ein JavaScript-Kapitel, und was für JavaScript wichtig ist, wird dort beschrieben.
Klasse und Objekt werden sehr oft synonym benutzt,
Ja. Macht es Deiner Ansicht nach _bei JavaScript_ einen Unterschied, die Trennung klarer zu vollziehen?
dadurch leidet die Klarheit.
Ohne Zweifel. Allerdings nur, wenn man aus JavaScript herausgeht und versucht, dort die Begriffe zu verwenden.
Mir ist klar, dass man an JavaSscript keine zu strengen (OO)-Anforderungen stellen darf, aber...
Ich kann schon verstehen, dass es einem Java'ler sauer aufstößt, wenn er Begriffe, die er als (im Detail) sehr unterschiedlich kennt, miteinander verwurschtelt werden :-) Aber andererseits: HTML-Elemente wurden noch bis vor kurzem im "Befehlsverzeichnis" (jetzt: Syntaxverzeichnis) aufgelistet. Das war mir immer ein Wahnsinns-Dorn im Auge *g* aber letzten Endes kommt es darauf einfach nicht an.
Um nicht falsch verstanden zu werden: Ich finde SelfHTML grossartig, zumal es auch umsonst ist, aber dieser Aspekt stört mich denn doch ziemlich.
Ich wäre auch dafür, bei einer Folge-(Sub-)Version von SelfHTML exakter zu arbeiten; vielleicht sogar mit einem kleinen, zentralen Lexikon, welches thematisch relevante Begriffe definiert. Aber ehrlich gesagt: Ich glaube nicht, dass es hier wirklich viel Schaden gibt, auch nicht was das Verständnis betrifft: Wer mit JavaScript in die OO-Programmierung einsteigt, wird die Begriffe kaum genug verinnerlichen; und wer bereits OO beherrscht, wird mit JavaScript kaum genug herausgefordert sein, als dass ihn diese Unfeinheiten beeindrucken würden.
Da ich dieses Forum auch sehr selten verfolgt habe, kann es natürlich sein, dass Ihr dieses Thema schon längst durchgekaut habt...
Nicht, dass ich mich erinnern würde - wahrscheinlich hat es bisher noch niemand als problematisch erkannt :-)
Cheatah
Moin moin!
dreht sich mir irgendwie der Magen um. Warum wird der Begriff Konstruktor nicht benutzt, warum werden nicht zumindest statische Methoden erwähnt? Klasse und Objekt werden sehr oft synonym benutzt, dadurch leidet die Klarheit. Oder ist das extra so geschrieben worden?
Das liegt daran, dass es das Konzept von Klassen und Instanzen in JavaScript nicht gibt. JavaScript verwendet das prototyp-basierte Objektmodell, welches imho 'completely brain-damaged' ist, aber wenn es Dich interessiert, kannst Du ja mal http://docserv.calocybe.dyndns.org/specs/NetscapeCommunications/JavaScript13ClientGuide/obj2.htm lesen.
window.open() würde ich als statische Methode der Klasse window ansehen, während ein Objekt window (oder self) ein Objekt (eine Instanz) der Klasse window ist.
Sowas wie statische Methoden gibt es folglich auch nicht.
So long
--
Die Aggressivitaet kommt vom Heavy Metal!!! CounterStrike ist doch nur zum Runterkommen!!!!!
Danke fuer Eure Antworten, Ihr habt sicher recht, man sollte es nicht mit dem Anspruch an JavaScript uebertreiben, ich denke aber, dass jemand, der bisher nicht OO programmiert hat, kaum die Vorteile einsehen wird. Er wird dann gaenzlich "objektfrei" programmieren, wie er es seit je her gewöhnt ist...
Tobias