Link zur Norm ECMAScript-262 (pdf 2.5MB)
ECMAScript ging aus proprietären JavaScript-Spezifikationen hervor. Proprietär kommt vom lateinischen proprietas und meint etwa Eigentümlichkeit, Eigentum, Closed Source, umfassenden Vorbehalt des Urhebers. JavaScript wurde ab 1998 zu einem internationalen Standard ECMA-262. Dadurch wurden die proprietären Spezifikationen, wie z.B. JavaScript (Netscape) und JScript (Microsoft), usw. vereinheitlicht und genormt.
Derzeit gibt es die ECMAScript Language Specificationen (ECMA-262):
1th Edition: NOT AVAILABLE 2th Edition: August 1998 3th Edition: December 1999 4th Edition: NOT EXISTING 5th Edition: December 2009
Aktuelle Spezifikation ECMAScript-262 (pdf 2.5MB) Versionen- Korrespondenzen
JavaScript-Historie | |
---|---|
1995 | Offizielle Verkündigung von JavaScript durch Sun und Netscape (früher LiveScript). Netscape Navigator 2.0-Vorversion (LiveWire, LivePayment, LiveAudio, LiveScript Brendan Eich). |
1996 | Netscape stellt den Enterprise Server 2.0 vor, der erste Server, der JavaScript beherrscht. Navigator 3.0 und Netscape Enterprise Server 2.0 (LiveConnect-Schnittstelle für Kommunikation zwischen JavaScript, Java und Plugins). Netscape und ECMA wollen JavaScript standardisieren |
1996 | Microsoft Internet Explorer 3 (MSIE3, JScript, VBScript) |
1997 | Microsoft verknüpft HTML, Scripting and Style Sheets zu DHTML. |
1997 | Communicator (Navigator 4.0, mit JavaScript 1.2) |
1997 | Die European Computer Manufacturers Association (ECMA) veröffentlicht ECMAScript als standardisierte Version von JavaScript und reicht den Standard bei der ISO ein. Draft International Standard ECMA-262: ECMAScript (entspricht JavaScript) |
1997 | W3C Note zu XSL (ECMAScript wird Scriptingsprache für XSL und XML) |
1997 | MSIE 4 (JavaScript 1.1, DOM) |
1998 | VRML97 wird ISO-Standard (ECMAScript) |
1998 | Adobe-PDF-Webformulare dürfen JavaScript enthalten |
1998 | Navigator-Source-Code-Freigabe (Mozilla) |
1998 | Netscape zeigt, dass JavaScript in 3,5 Millionen Webseiten eingesetzt wird |
1998 | ECMAScript wird Norm ISO/IEC 16262 |
1998 | Communicator 4.5 |
1998 | Netscape JavaScript 1.4 (kompatibel mit ECMA-262, Exception handling, New operators in and instanceof, Changes to LiveConnect, Changes to the Function object) |
1999 | Standard ECMA-262, Language Specification,3th Edition: December 1999 |
2009 | Standard ECMA-262, Language Specification, 5th Edition: December 1999 |
ECMAScript is an object-oriented programming language for performing computations and manipulating computational objects within a host environment.
ECMAScript definiert eingebaute Objekte (built-in objects),
die global sind (Object object, Function object, Array object,
String object, Boolean object, Number object, Math object, Date object, RegExp object,
JSON object, Error objects).
ECMAScript definiert eingebaute Operatoren
(unary operations, multiplicative operators, additive operators, bitwise shift operators,
relational operators, equality operators, binary bitwise operators,
binary logical operators, assignment operators, comma operator).
Link zur Norm
ECMAScript-262 (pdf 2.5MB)
ECMAScript wird im allgemeinen Sprachgebrauch auch JavaScript genannt. ECMAScript kann Objekte erstellen und verwenden. Mit ECMAScript können (Browser-, DOM- und User-) Objekte benutzt und Formulare, Buttons, HTML-Text erzeugt und manipuliert werden. Interaktionen mit der Tastatur und Maus sind möglich.
ECMAScript 262 beschreibt einen standardisierten JavaScript-Sprachkern. ECMAScript ist eine schlanke, dynamisch typisierte, objektorientierte, aber klassenlose Skriptsprache. Auf der Basis von Prototypen (und weiterem) sind alle objektorientierten Programmierparadigmen möglich. Mit ECMAScript kann objektorientiert und auch prozedural und auch rein funktional programmiert werden.
ECMAScript (siehe ECMAScript-262-Standard (pdf 2.5MB) ) wird in Millionen von Webseiten verwendet (Browser-Voreinstellung).
ECMAScript
JavaScript braucht eine ausführende Umgebung (Environment, Browser) das den JavaScript-Code interpretiert, d.h. JavaScript im Browser läuft wie in einer "Sandbox", die die Programmiersprache in eine Art Sicherheitskäfig eingesperrt. Dadurch wird verhindert werden, dass ECMAScript-Code beim Surfen auf dem Rechner von Anwendern (Client-Rechnern) Schaden verursachen können. Der Sicherheitskäfig verhindert gefährliche (Schreib-) Zugriffe aus das Dateisystem. ECMAScript kann (i.a.) im Browser deaktiviert werden.
Achtung! Der User kann (i.a.) auch Sicherheitseinstellungen setzen, die Beschränkungen bedingt umgehen (Upates, ActiveX, rein lokale Browser-Applikationen, RPC).
Unter Windows kann ein javaScriptFile.js auch ohne Browser von der Console aus (WSH = Windows Scripting Host; mit Hilfe von cscript.exe oder wscript.exe) ausgeführt werden. Dadurch sind Admistrationen und Zugriffe auf das Dateisystem von Windows möglich. Aus JavaScript können keine Nativ-Applikationen erzeugen werden.
ECMAScript (=JavaScript) kann Objekte erstellen und verwenden. Mit JavaScript können (Browser-) Objekte benutzt werden. Mit JavaScript können Formulare, Buttons, HTML-Text erzeugt und manipuliert werden. Interaktionen mit der Tastatur und Maus sind möglich.
ECMAScript hat eingebaute Objekte und es kann objektorientiert programmiert werden. Funktionen, Arrays, Strings, Booleans, Date Objects, Math Objects, Regular Expression, Pattern sind Objekte.
ECMAScript ist eine Script-Sprache, die innerhalb von HTML-Dokumenten verwendet werden kann. Der anzeigende Browser interpretiert die Script-Statements. Mit ECMAScript können HTML-Seiten interaktiv gestaltet werden (Animationen, Lauftexte, Marquees, Statuszeile, Events, onMouseOver, usw.) und mehrere Fenster (Framesets) gleichzeitig aktualisiert werden.
Mit ECMAScript können Formularprüfungen während der Eingabe durchgeführt werden. Die neuen Browser unterstützen mit Hilfe von ECMAScript dynamische WWW - Seiten. Z.B. können die Hintergrund / Vordergrund - Farben während dem Laden der Seite automatisch oder im Dialog geändert, die aktuelle Uhrzeit benutzt, formatierter WWW - Text erstellt werden. ECMAScript - Programme werden direkt in die HTML - Datei gestellt und ähnlich zu Batch-Dateien oder Shell-Scripts ausgeführt. Weil der ECMAScript interpretiert wird, werden nur kleine Script-Programme verwendet. Die Ausführung von großen Programmen ist langsam. Der Client - Anwender hat keinen Schutz vor Programmfehlern ( Endlosschleife ).
Dieses Beispiel findet sich hier (Vergleich zwischen JavaScript und Java, Creating the Hierarchy).
JavaScript | Java |
---|---|
function Employee () { this.name = ""; this.dept = "general"; } |
public class Employee { public String name; public String dept; public Employee () { this.name = ""; this.dept = "general"; } } |
JavaScript | Java |
function Manager () { this.reports = []; } Manager.prototype = new Employee; function WorkerBee () { this.projects = []; } WorkerBee.prototype = new Employee; |
public class Manager extends Employee { public Employee[] reports; public Manager () { this.reports = new Employee[0]; } } public class WorkerBee extends Employee { public String[] projects; public WorkerBee () { this.projects = new String[0]; } } |
JavaScript | Java |
function SalesPerson () { this.dept = "sales"; this.quota = 100; } SalesPerson.prototype = new WorkerBee; function Engineer () { this.dept = "engineering"; this.machine = ""; } Engineer.prototype = new WorkerBee; |
public class SalesPerson extends WorkerBee { public double quota; public SalesPerson () { this.dept = "sales"; this.quota = 100.0; } } public class Engineer extends WorkerBee { public String machine; public Engineer () { this.dept = "engineering"; this.machine = ""; } } |
ECMAScript-Code kann in eine *.js- Datei ausgelagert werden.
Der ausgelagerte Code ist ohne umschließende <script> ... </script>
-Tags
und kann in die aktuelle Seite "includiert" (geladen) werden.
Eine HTML-Seite kann auch seiteninterner ECMAScript-Code verwenden, der zwischen
<script> und </script>
steht.
ECMAScript-Code kann im HTML-Body und/oder im HTML-Head stehen.
JavaScript-Funktionen werden oft im Head definiert und im Body verwendet. Die Prüfung, ob im Browser JavaScript aktiviert ist erfolgt im Body etwa gemäss:
<noscript> Bitte beim Browser JavaScript aktivieren! </noscript>
JavaScript und XHTML:
Die meisten Sprachen mit c-ähnlicher Syntax haben einen Block-Geltungsbereich. ECMAScript verwendet einen Funktions-Geltungsbereich.
Hier ein Beispiel, das die Sichtbarkeit der globalen Variablen x
zeigt.
Achtung! Eine Verbundanweisung schafft keine neue Sichtbarkeit von inneren Variablen.
Hier die Ausgabe:
Siehe z.B. http://javascript.crockford.com/style2.html
|| === == true ? 'on' : 'off' ++ -- >> << >>> |
Code Snippet
|
Anzeige: |
Im einfachsten Fall wird ein Text-Editor und ein Browser benötigt. Für die ECMAScript -Programmierung sind HTML-Kenntnisse erforderlich. ECMAScript ist case-sensitive (unterscheidet Groß/Klein-Schreibung). Verbundanweisungen ({...}, blocks of statements) fassen mehrere Anweisungen zusammen.
Hier einige einführende Beispiele:
ECMAScript-Code | Ausgabe | |
---|---|---|
Kommentare Comments |
Code Snippet
| Viele elementare Sprachkonstrukte sind "recht ähnlich" zur C++- und Java-Syntax |
ECMAScript- Anweisungen parseInt() substring() typeof() |
Code Snippet
|
Anzeige: |
undefined null typeof() |
Code Snippet
| Anzeige: |
javascript:
.. in Kommandozeile?
Ein Bookmarklet ist ein kleines JavaScript-Makro,
das als Bookmark gespeichert wird und dadurch die Funktionen eines Webbrowsers erweitert.
Ein Bookmarklet entspricht einem Lesezeichen auf das Pseudoprotokoll javascript:
,
das ermöglicht, Code durch den Browser auszuführen.
Beispiel für Browser-Adresseingabe:
javascript:i=3;alert('erg='+4*i)
Kleine ECMAScript-Codestücke können in der Adresszeile des Browsers ausgeführt werden. Bookmarklets sind solche kleine Hilfsmittel, die ECMAScript benutzen und Fähigkeiten des Browsers erweitern. Bookmarklets sind klein, einfach, gratis, ungefährlich. Bookmarklets können in der Adresszeile des Browsers (bei aktivem ECMAScript) ausgeführt werden. Bookmarks (Favoriten, Lesezeichen) speichern Internet-Adresse. Bookmarklets können als Bookmark gespeichert werden ("Zu Favoriten hinzufügen...").
Beispiele: