Objektorientierung in JavaScript

JavaScript 2.0

Was ist neu?

Mit der neusten Version 2.0 von JavaScript erhält der Sprachkern viele neue und umfassende Elemente. Diese Verbesserungen scheinen eine Anpassung an bekannte Sprachen wie Java oder C++ zu sein. Allerdings wird der im ECMAScript 4.0 definierte Standard aktuell von keinem Browser unterstützt. Im Folgenden werden die wichtigsten, bisher bekannten Erneurungen aufgezeigt.

Typisierung

In JavaScript 2.0 wird es möglich sein Typdeklarationen zu formulieren. Dazu benutzt man die folgende Syntax:

var v:type = value;

type ist hierbei ein konstanter Ausdruck, der zu einem Typ ausgewertet wird. Dennoch wird JavaScript 2.0 nicht streng typisiert sein, offiziell wird es streng -dynamisch typisiert genannt. Das bedeutet, dass nicht jede Variable typisiert sein muss. Untypisierte Variablen erhalten automatisch den Typ Object und können somit alle anderen Typen aufnehmen. Explizit typisierte Variablen enthalten garantiert immer Variablen vom definierten Typ, sonst wird ein Fehler entstehen.

Klassendefinition

Mit der neuen Version wird erstmals die Definition von Klassen möglich sein. Das Klassen-Prinzip löst aber keinesfalls das Prototypen-Konzept ab. Klassen werden dabei ziemlich analog zu Java deklariert:

class MeineKlasse {
  var a:Integer = 1;
  function B() {return a;}
}

Attribute

Darüber hinaus wird es neue Attribute und Schlüsselwörter geben. Ein Beispiel ist extend, hiermit können ab Version 2.0 Eigenschaften und Methoden aus einer Klasse in eine andere übernommen werden:

Klasse_A extend(Klasse_B)

Mittels des Schlüsselwortes constructor vor einer Funktionsdeklaration werden in JavaScript 2.0 Konstruktoren explizit gebildet:

constructor function Klasse() {/*...*/}

Weiterhin wird es neue Schlüsselwörter geben, um die Sichtbarkeit von Objekten und Objekteigenschaften innerhalb eines Pakets zu definieren.

Funktionen

Zukünftig wird es möglich sein für Funktionen die Parametertypen, sowie den Rückgabewert zu definieren. Zudem können optionale Parameterwerte für nicht angegebene aktuelle Parameter definiert werden:

//Funktionsdeklaration mit Parametertypen, optionalen Parameterwerten
//und Rückgabetyp
function f(a:Integer, b:Integer = a, c:Integer = b):Integer {
  return a + b + c;
}

f(3); //==9
f(3, 4) //== 11
f(3, 4, 10) //== 17

Dies soll nur ein kleiner Umriss um die neuen Sprachelemente von JavaScript 2.0 sein und einen kleinen Ausblick geben, auf das, was von der neuen Version 2.0 zu erwarten sein wird.

[top]