E03 "Day 3: 2:00 p.m 3:00 p.m"

Relevanta dokument
E13 "Behind the Wild"

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

E12 "Evil is going on"

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

JAVASCRIPT. Beteende

C++ Objektorientering - Klasser. Eric Elfving

Föreläsning 6: Metoder och fält (arrays)

Objektbaserad programmering

JavaScript. En Introduktion

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

Lektion 5, del 1, kapitel 12

EDA095 JavaScript. Per Andersson. Maj 4, Lund University Per Andersson EDA095 JavaScript Maj 4, / 23

JS & beteende. TNMK30 - Elektronisk publicering

E12 "Evil is going on"

TDDC76 - Programmering och Datastrukturer

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Metoder - en funktion: medel

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

E07 "Greased Lightning"

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Föreläsning 2, vecka 8: Repetition

TDDC77 Objektorienterad Programmering

E11 "Protection" Föreläsning 11, HT2014 Säkerhet, tillgänglighet. Johan Leitet. Kurs: 1dv403 Webbteknik I

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Repetition C-programmering

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Kopiering av objekt i Java

Exemple på Tentauppgifter Webbprogrammering

JavaScript En Introduktion

Objektorienterad Programmering (TDDC77)

Introduktion C-programmering

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Karlstads Universitet, Datavetenskap 1

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

! HTML Formulär! JavaScript! Syntax! Events! DOM. ! URL variabler i en query string (get) ! HTTP post request (post)

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Programmering B med Visual C

Objektorienterad programmering

Övningar Dag 2 En första klass

Föreläsning 8: Exempel och problemlösning

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objekt, Klasser, Paket m. m.

OOP Objekt-orienterad programmering

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Funktionens deklaration

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Modern webbutveckling. av Robert Welin-Berger

Kapitel 6 - Undantag

Objektorienterad Programmering (TDDC77)

Beräkningsverktyg HT07

Föreläsning 10. Pekare (Pointers)

Synlighet. Namespace Scope-operatorn Klasser Vänner

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Klassen javax.swing.timer

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

Classes och Interfaces, Objects och References, Initialization

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Föreläsning 3. Stack

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

<script src= "

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Arrays (indicerade variabler) Föreläsning 4

Objektsamlingar i Java

Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Hjälpmedel för kompilatorkonstruktion, DVB004

Arrays (indicerade variabler) Föreläsning 6

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

DAT043 - Föreläsning 7

Tentamen ID1004 Objektorienterad programmering October 29, 2013

1 Namnkontroll (NameControl)

JavaScript. JavaScript Ramverk (Bibliotek) jquery + jquery UI

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Transkript:

E03 "Day 3: 2:00 p.m 3:00 p.m" Föreläsning 3, HT2013 Funktioner och objekt Kurs: 1dv403 Webbteknik I Johan Leitet

E03 Day 3: 2:00 p.m. - 3:00 p.m. Dagens agenda Funktioner Ordning av inladdning Objekt (skapa och ta bort) Arrayer Date Math try/catch/finally

Strict mode use strict ; // Använd strict-mode globalt function dostuff(){ use strict ; // Använd i funktionen } Undviker globala varibler. Ger fel vid felaktig hantering I samband med objekt Ger kod i eval() ett eget scope förändring av parseint().. IE10+ FF4+ S5.1+ C13+

Funktioner Funktioner låter oss dela upp vår kod vilket främjar återanvändning av kod samt gör vår kod mer lättläst och överskådbar. Funktioner är en av grundpelarna och vi kommer framöver att se hur vi kan använda funktioner på objekt. (metoder)

Funktioner function carinfo(brand, year){ } return "Din "+brand+" är av årsmodell "+year; var result = carinfo("chrysler", 2006); console.log(result); // "Din Chrysler är av årsmodell 2006"

Funktionsdeklaration: Funktioner function summera(tal1, tal2){ } return tal1+tal2; Funktionsuttryck: var summera = function(tal1, tal2){ }; return tal1+tal2; obs!

Funktionsdeklaration: Deklaration vs. Uttryck var summa = summera(5, 10); function summera(tal1, tal2){ return tal1+tal2; } Detta gäller inte om funktion och anrop ligger i olika filer Funktionsuttryck: var summa = summera(5, 10); // Genererar ett fel då summera inte är skapad ännu. var summera = function (tal1, tal2){ return tal1+tal2; };

Funktioner function summera(tal1, tal2){ } return tal1+tal2; Detta betyder att vi inte har någon overloading, överlagring var summeraigen = summera; console.log(summera(2,3)); // 5 console.log(summeraigen(2,3)); // 5 summera = null; console.log(summeraigen(2,3)); // 5

Funktionsuttryck function calculator(calcfunction){ var var1 = 10; var var2 = 20; return calcfunction(var1, var2); } var sum = function(x,y){ }; return x+y; var svar = calculator(sum); console.log(svar); //30 svar = calculator(function(x,y) { return x-y;};); console.log(svar); //-10

Ordningen spelar roll <html> </html> <head> </head> <body> </body> <title>funktioner</title> <script src="myfuncs1.js"></script> <script type="text/javascript"> myfunction1(); // Ok, inladdad myfunction2(); // Fail, ej inladdad </script> <script src="myfunc2.js"></script>

Variabelscope var color = "blue"; function getcolor(){ return color; } console.log( getcolor() ); var color = "blue"; function getcolor(){ var color = "red"; return color; } console.log( getcolor() ); Zakas: sid 90-92

Pure functions Funktioner utan sidoeffekter X Y f(x, y) Z

Objekt Objekt är en oerhört central del i JavaScript. Språket är i allra högsta grad objektorienterad, till och med objektbaserat. Nästan allt är objekt i grunden.

ex nihilo Skapa egna objekt var rect = new Object(); rect.width = 200; rect.height = 300; console.log(rect.width * rect.height); Vi kan även skapa metoder på vårt objekt med hjälp av en anonym funktion: rect.area = function(){ return rect.width * rect.height; }; console.log(rect.area());

Ta bort egenskaper och objekt Vi kan ta bort egenskaper genom delete-operatorn:... delete rect.width; För att ta bort ett objekt använder vi inte delete, utan vi ser till att det inte finns några referenser till objektet: var myobj = new Object(); var onemore = myobj; myobj = null; onemore = null;

Object literals { } var point = {x:15, y:12}; var rect = { width: 200, height: 300, }; area: function(){ return this.width * this.height; } console.log(rect.width);

Komma åt egenskaper var objectives = { info: "Save the world" } console.log(objectives.info); // Save the world console.log( objectives["info"] ); // Save the world

Array [ ] En array är ett inbyggt objekt som kan användas för att spara flera värden. Vi har lärt oss att variabler kan hålla ett och endast ett värde åt gången. Arrayer kan däremot hålla flera värden på samma gång. 567 34 Jack 84.23 Variabel: Array: [1] [2] [3] [4] myvar // Dekalarera användningen av en ny array var myarr = []; myarr[0] = 34; myarr[1] = "Jack"; myarr[2] = 84.23; myarr[3] = {}; myarr = [34, "Jack", 84.23, {}]; myarr[0] myarr[1] myarr[2] myarr[3]

Array Arrayer har ett antal nyttiga metoder och egenskaper length join() pop() slice() sort() push() reverse() shift() reverse() splice() concat() h"ps://developer.mozilla.org/en/javascript/reference/global_objects/array

Array och for var myarr = [34, "Jack", 84.23, {}]; Använd for-loop: for (var j = 0; j < myarr.length; j+=1) { console.log(typeof myarr[j]); } Ännu mer resurssnålt: for (var j=0, length=myarr.length; j < length; j+=1) { console.log(typeof myarr[j]); }

Undvik for in på arrayer Riskabelt att använda med for in loopar: for (var i in myarr) { console.log(typeof myarr[i]); }

Iterativa metoder [].map() [].foreach() [].filter() [].reduce() [].every() IE9+

Matris (multidimensionell array) var myarr = []; myarr[0] = [10,11,12]; myarr[1] = [13,14,15]; myarr[2] = [16,17,18]; 0 1 2 0 1 2 10 13 14 16 11 12 15 17 18 myarr[1][2] = 45; myarr[2][0] = 12; 0 1 0 1 2 10 11 12 13 14 45 2 12 17 18

Matris var myarr = []; myarr[0] = []; myarr[1] = []; myarr[2] = []; myarr[1][3] = 5; myarr[0][1] = 8;

Date Med Date-objektet kan vi hantera tid, vilket ofta är väldigt centralt. För att skapa ett Date-objekt som håller nuvarande tid skapar vi ett tomt Date-objekt: var nowdate = new Date(); Detta objekt kommer att innehålla den tid som var då objektet skapades. Vi kan även skapa ett Date-objekt som innehåller en annan, lokal, tid: var mydate = new Date(2001, 10, 6, 21, 15, 20, 20); Datum-objektet ovan kommer att innehålla följande datum och tid: 2001-11-06 21:15:20:20 Där det sista 20 är millisekunder. (Observera att månaden börjar på 0!) Datumobjekt spara sin tid i antalet millisekunder sedan den 1e Januari 1970. Det går att skicka in antalet millisekunder till Dateobjektet: var mydate = new Date(943410001010);

Date Användbara metoder på en instans av datumobjektet: getdate() setdate() getday() getseconds() setseconds() getfullyear() serfullyear() gettime() settime() getminutes() setminutes() getmonth() setmonth() gethours() sethours() var mydate = new Date(2001, 5); console.log(mydate.getmonth()); // 5

Date JavaScript har inbyggda metoder för att hantera UTC-tid (Coordinated Universal Time). UTC hette tidigare GMT (Greenwich Mean Time ) Lägg bara till UTC på funktionerna på förra sidan. T.ex: getutchour() för att få tiden i UTC. UTC var mydate = new Date(Date.UTC(2001, 10, 6, 21, 15, 20, 20)); Lita på klienten? Att tiden på klienten stämmer kan vi inte lita på. Detta beror helt på vilka inställningar klienten har, t.ex. krävs att rätt tidszon är inställd. Bättre är då att låta servern ge klienten rätt tid. Detta kan vi dock inte åstadkomma utan serversideskript:

Math Math-objektet tillhandahåller en uppsättning av användbara metoder och egenskaper för att göra olika typer av beräkningar. console.log( Math.abs( -123 ) ); // 123 ceil() sin() floor() round() sqrt() pow() random () cos() tan() h"ps://developer.mozilla.org/en/javascript/reference/global_objects/math

try/catch/finally Try/catch/finally-block kan användas för att fånga fel som kastas. try { var myobj = x; // Kastar ett undantag om x inte är deklarerad. } catch(error){ console.log(error.message); } finally { // Kod här körs oavsett vad } throw kan användas för att kasta egengjorda undantag if(userinput < 0) { throw new Error( User input less than 0. Must be greater- ); }

Testa dig själv

Douglas Crockford joined Greenpeace to fight global namespace pollution. Källa: http://twitter.com/crockfordfacts