Web-Techniken Einführung in JavaScript

Ähnliche Dokumente
Programmieren im Web 2.0

Repetitorium Informatik (Java)

Inhalt. Teil I: Der Sprachkern von JavaScript

Multimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Web-Programmierung (WPR)

JavaScript in Drupal

Webengineering. jquery

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Firefox Add-ons. Präsentation in WAP WS09/10 von Christoph ASCHBERGER, Andreas BERTOLIN, Robert MUTTER und Yunzhou XU

Einstieg in die Informatik mit Java

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Objektorientierte Programmierung

AuD-Tafelübung T-B5b

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

VORKURS INFORMATIK EINE EINFÜHRUNG IN JAVASCRIPT

Grundlagen von Python

Einführung in die Java- Programmierung

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Programmieren von Webinformationssystemen

Javascript. Einführung in Javascript. Autor: Christian Terbeck Erscheinungsjahr:

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

Programmierkurs Python I

Einführung in ActionScript

Javakurs für Anfänger

JavaScript. Ein Crashkurs. Mario Heiderich

3 Objektorientierte Konzepte in Java

AJAX Implementierung mit Joomla!

Multimedia im Netz Wintersemester 2011/12

SimpleOOP Opensource OOP Plugin

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

JavaScript: Von einfachen Scripten zu komplexen Anwendungen. MMT Dezember 2011

Virtuelle Realität und Simulation - Übung 2

Überschreiben von Methoden

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Java Einführung Methoden in Klassen

Software Engineering Klassendiagramme Einführung

Theorie zu Übung 8 Implementierung in Java

3 Objektorientierte Konzepte in Java

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Java Kurs für Anfänger Einheit 5 Methoden

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Programmieren von Webinformationssystemen

Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg

JavaScript und PHP-Merkhilfe

Java: Der Einstieg. Algorithmen und Datenstrukturen II 1

PROGRAMMIERUNG IN JAVA

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

D.5 Eine Klasse für serielle Geräte schreiben

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Code-Organisation in JavaScript

Programmieren. JavaScript-Objekt-Verarbeitung mit GSON. Heusch --- Ratz Institut für Angewandte Informatik

Beispiel für überladene Methode

4 Kontrollfluss-Diagramme

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Einstieg in die Informatik mit Java

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

JAVA - Methoden - Rekursion

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Michael Seeboerger-Weichselbaum. Das Einsteigerseminar JavaScript 4., überarbeitete Auflage

Java: Vererbung. Teil 3: super()

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015

ActiveX Scripting IE und DHTML (DOM): Architektur, Beispiele (Object Rexx)

Sachwortverzeichnis

1 Polymorphie (Vielgestaltigkeit)

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Seminar Scala SS2010, Einführung. R. Schiedermeier Fakultät 07 für Informatik und Mathematik

Javakurs zu Informatik I. Henning Heitkötter

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

Die offizielle Homepage, Informationen, Entwicklergemeinde, etc. findet man unter

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: Übung WS 2014/2015. Benedikt Schumm M.Sc.

Oliver Zeigermann JavaScript für Java-Entwickler

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Objektorientierte Programmierung. Kapitel 12: Interfaces

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

JavaScript und Java. JavaScript: Geschichte. Philosophie der Sprache. Interpreter von Brendan Eich bei Netscape erfunden (in einer Woche)

5. Tutorium zu Programmieren

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

Interaktion Java und JavaScript

Web und Mobile Apps Programmieren mit Dart

Java Einführung Methoden. Kapitel 6

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Transkript:

Web-Techniken Einführung in JavaScript Prof. Dr. Axel Böttcher Winter 2012/13 15. September 2012

Ausführung von JavaScript Variante 1: Ausführung im Browser durch direktes Einbetten: 1 <html> 2 <head> 3 < s c r i p t t y p e=" text / javascript "> 4 a l e r t ( " Hello World " ) ; 5 </ s c r i p t> 6 </ head> 7 8 <body> 9...... 10 </ body> 11 </ html>

Ausführung von JavaScript Variante 2: Ausführung im Browser durch Einbetten als Script: myscript.js 1 a l e r t ( H e l l o World ) ; 1 <html> 2 <head> 3 < s c r i p t t y p e=" text / javascript " s r c=" path / myscript.js"> 4 </ s c r i p t> 5 </ head> 6 <body> 7.... 8 </ body> 9 </ html>

Ausführung von JavaScript Variante 3: Ausführung mit nodejs etwa auch in cloud9 (www.c9.io) node myscript.js Achtung: hier haben Sie nicht das DOM des Browsers zur Verfügung, also: 1 c o n s o l e. l o g ( H e l l o World ) ; Die Konsole gibt es allerdings auch im Firefox über die Firebug Tools

Ausführung des Codes (Varianten 1 und 2) Code, der nicht in Funktionen gekapselt ist, wird direkt beim Laden ausgeführt. Der Seiteninhalt (DOM) kann erst nach vollständigem Laden manipuliert werden. 1 window. onload = f u n c t i o n ( ) { 2 // Initialisierungscode 3...... 4 } Das bringt uns schon direkt zu den Event-Listenern ( Observer-Pattern).

Das globale Objekt Im Browser gibt es das globale Objekt window. (bzw. global in nodejs) Alle Variablen, die innerhalb von Funktionen nicht mit dem Schlüsselwort var deklariert sind, werden Attribut des globalen Objekts!

Datentypen Jacascript ist dynamisch typisiert, d.h. dass sich der Typ einer Variablen aus dem Typ des ihrzugewiesenen Wertes ergibt. Die primitiven Typen sind number (hat Methoden, aber ist immutable) string (hat Methoden, aber ist immutable) boolean (hat Methoden, aber ist immutable) undefined null ( null ist ein Objekt) Daneben kennt die Sprache Objekte (unter die auch die Arrays sowie die Funktionen fallen!).

Semicolon Insertion Ein Semikolon ist optional (wird aber automatisch eingefügt) am Zeilenende (Ausnahme: leere Anweisung und Kopf einer for-schleife) vor einer } am Ende des Programms Dies ist insbesondere deshalb ungünstig, weil durch Semikolon aus jedem beliebigen zulässigen Ausdruck eine Ausdrucksanweisung entsteht: 1 r e t u r n 2 4 2 ;

JsLint Sehr hilfreiches Tool zum Überwachen der Codequalität. Online unter http://www.jslint.com/ Kommandozeilentool bei http://code.google.com/p/jslint4java/ Als Java library verfügbar, somit in JUnit ausführbar: 1 @Test 2 p u b l i c v o i d t e s t W i t h J s L i n t ( ) { 3.. 4 J S L i n t B u i l d e r b u i l d e r = new J S L i n t B u i l d e r ( ) ; 5 J S L i n t j s L i n t = b u i l d e r. f r o m D e f a u l t ( ) ; 6 J S L i n t R e s u l t l i n t = 7 j s L i n t. l i n t ( filename, b u f f e r e d R e a d e r O f J S S o u r c e C o d e ) ; 8 L i s t <I s s u e > i s s u e s = l i n t. g e t I s s u e s ( ) ; 9 a s s e r t E q u a l s ( J S L i n t i s s u e s!, 0, i s s u e s. s i z e ( ) ) ; 10 }

Funktionen Funktionen sind der Kern der Sprache. 1st class citizens Lokale Variablen werden definiert mit Schlüsselwort var, ohne Typangabe. Sie können überall in einer Funktion definiert werden. Der Gültigkeitsbereich jeder Variablen ist die komplette Funktion (nicht nur der Block, in dem die Variable definiert ist.) So genanntes Hoisting (Hochziehen). Formalparameter können deklariert werden. Nicht explizit übergebene Aktualparameter sind undefined Alle Aktualparameter sind in einem Array arguments verfügbar.

Closures Der Kontext einer inneren Funktion enthält den Kontext der umgebenden (äußeren) Funktion (Ausnahme: this der umgebenden Funktion) selbst dann, wenn die äußere Funktion bereits durch return beendet wurde. Die Closure ist privat (von außen nicht sichtbar)!

Beispiel (von D. Crockford) 1 f u n c t i o n i n i t ( ) { 2 f a d e ( button ) ; 3 } 4 5 f u n c t i o n f a d e ( i d ) { 6 v a r e l e m e n t = document. g e t E l e m e n t B y I d ( i d ), 7 l e v e l = 1 ; 8 f u n c t i o n s t e p ( ) { 9 v a r h = l e v e l. t o S t r i n g ( 1 6 ) ; 10 e l e m e n t. s t y l e. b a c k g r o u n d C o l o r = 11 #FFFF + h + h ; 12 i f ( l e v e l < 15) { 13 l e v e l ++; 14 settimeout ( step, 1 0 0 ) ; 15 } 16 } 17 settimeout ( step, 1 0 0 ) ; 18 }

Objekte Objekte können einfach als Literale hingeschrieben werden: 1 v a r r a t i o n a l = { 2 num : u n d e f i n e d, 3 denom : u n d e f i n e d, 4 r e d u c e : f u n c t i o n ( ) { 5 v a r r ; 6 v a r n = t h i s. num ; 7 v a r d = t h i s. denom ; 8 f o r ( r = n % d ; r!== 0 ; r = n % d ){ 9 n = d ; 10 d = r ; 11 } 12 t h i s. num /= d ; 13 t h i s. denom /= d ; 14 } 15 } ;

Zugriff auf die Attribute Ähnlich zu Objekten in Java. Aber auch Ähnlichkeit zur Array-Syntax von Java. 1 r a t i o n a l. num = 1 5 ; 2 r a t i o n a l [ denom ] = 1 0 ; 3 r a t i o n a l. r e d u c e ( ) ; Es geht noch wilder: 1 v a r someobject = { 2 1 : u n d e f i n e d ; 3 } 4 someobject [ 1 ] = 4 2 ;

Erzeugung von Objekten Hinschreiben als Objektliteral mittels Object. create mittels new Mischformen, Factories etc.

Prototypen Es gibt keine Klassen in JavaScript, nur Objekte und Funktionen. Erzeugen von Objekten und Vererbung erfolgt durch Prototypen. Prototypische Objekterzeugung ( Klonen): 1 v a r b = O b j e c t. c r e a t e ( r a t i o n a l ) ; // Klon 2 O b j e c t. g e t P r o t o t y p e O f ( b ) ; // --> rational Eigentlich hätten wir gerne sowas wie einen Konstruktor: 1 v a r b = new R a t i o n a l ( 1 5, 1 0 ) ;

Pseudoklassisch 1 f u n c t i o n R a t i o n a l (num, denom ){ 2 t h i s. num = num ; 3 t h i s. denom = denom ; 4 } 5 6 R a t i o n a l. p r o t o t y p e. r e d u c e = f u n c t i o n ( ) { 7 v a r r ; 8 v a r n = t h i s. num ; 9 v a r d = t h i s. denom ; 10 f o r ( r = n % d ; r!== 0 ; r = n % d ){ 11 n = d ; 12 d = r ; 13 } 14 t h i s. num /= d ; 15 t h i s. denom /= d ; 16 } ; 17 18 v a r b = new R a t i o n a l ( 1 5, 1 0 ) ; 19 b. r e d u c e ( ) ;

Ohne umständlichen Prototype unter Ausnutzung der Closure 1 v a r r a t i o n a l = f u n c t i o n (num, denom ){ 2 r e t u r n { 3 r e d u c e : f u n c t i o n ( ) { 4 v a r r ; 5 v a r n = num ; 6 v a r d = denom ; 7 f o r ( r = n % d ; r!== 0 ; r = n % d ){ 8 n = d ; 9 d = r ; 10 } 11 num /= d ; 12 denom /= d ; 13 }, 14 getnum : f u n c t i o n ( ) { r e t u r n num ; }, 15 getdenom : f u n c t i o n ( ) { r e t u r n denom ; } 16 } ; 17 } ; 18 19 v a r r 1 = r a t i o n a l ( 1 5, 1 0 ) ; 20 r 1. r e d u c e ( ) ; 21 c o n s o l e. l o g ( r 1. getnum ( ) ) ;

Fortsetzung... 1 c o n s o l e. l o g ( O b j e c t. g e t P r o t o t y p e O f ( r 1 ) ) ; 2 c o n s o l e. l o g ( O b j e c t. getownpropertynames ( r 1 ) ) ; Ausgabe: {} [ getnum, getdenom, reduce ] In der Closure lassen sich Methoden verstecken ( private)

Vererbung durch einfaches Hinzufügen von Methoden 1 v a r f o o = f u n c t i o n ( myname ){ 2 r e t u r n { 3 name : myname, 4 t o S t r i n g : f u n c t i o n ( ) { r e t u r n t h i s. name ; } 5 } ; 6 } ; 7 8 v a r bar = f u n c t i o n ( ) { 9 v a r t h a t = f o o ( bar ) ; 10 t h a t. setname = f u n c t i o n ( newname ){ 11 t h a t. name = newname ; 12 } ; 13 r e t u r n t h a t ; 14 } ;

JQuery Hilfreiche und sehr weit verbreitete Library, um mit dem DOM zu arbeiten.

Selektoren Kern ist die globale Funktion jquery kurz $. Aufruf mit Selektor als Parameter liefert Array mit JQuery-Wrapper-Objekten, die bequem manipuliert werden können. 1 $ (. s o m e c l a s s ). h i d e ( ) ; // iteriert implizit Return-Wert ist wieder die Collection = Operationen sind kaskadierbar

Event-Listener 1 < s c r i p t t y p e= t e x t / j a v a s c r i p t > 2 window. onload = f u n c t i o n ( ) {... } 3 </ s c r i p t >

Asynchronous Javascript and XML (AJAX) Statt XML ist heute JSON verbreiteter.

Same Origin Policy Longrightarrow Starten Sie Seiten mit aktiven (JavaScript) Inhalten nicht per Doppelklick, sondern laden Sie diese stets über den/einen Server.