Hi,
Zu der Frage, weshalb man die Math Funktionen nicht global gemacht hat:
Das würde doch nur unübersichtlicher werden, bzw. es ist doch der Sinn einer objektorientierten Sprache, die Methoden strukturiert in Namespaces und Klassen unterzubringen.
ja schon, aber dann doch in einem Kontext, in dem sie Sinn ergeben. Wenn man schon die mathematischen Funktionen in einem Objekt bzw. in einer Klasse kapseln möchte, dann z.B. im Number-Objekt (weil alle Math-Funktionen auf Argumenten vom Typ Number arbeiten), ebenso wie einige Stringfunktionen an das String-Objekt gebunden sind. Aber nur der Kapselung wegen ein unabhängiges Objekt zu bauen, halte ich für unsinnig.
Abgesehen davon bin ich der Ansicht, dass "allgemeingültige" Funktionen, die von ihrer Arbeitsweise her nicht an spezialisierte Objekte (in diesem Sinn bezeichne ich Primitive wie Number oder String nicht als spezialisierte Objekte) gebunden sind, auch im globalen Scope verfügbar sein sollten, denn da gehören sie IMHO hin.
Und früher oder später gäbs dann Namenskonflikte. Man könnte dann z.B. keine Variable mehr E nennen und gleichzeitig auf die eulersche Zahl zugreifen...
Ja, mit den vordefinierten Variablen bzw. den mathematischen Konstanten ist das ein besonderer Fall, da JS keine Konstanten kennt.
Mag blöd erscheinen, aber ich finde sowas gehört zum guten Design, also die Strukturierung zusammengehörender Funktionen in ein Oberobjekt.
Ja, Strukturierung gern - aber dann bitte mit Verstand, nicht nach Willkür, nur damit die Funktionen "aufgeräumt" sind.
Ciao,
Martin
Kleine Geschenke erhalten die Freundschaft.
Große verderben sie aber meist auch nicht.