Jag lärde mig Javascript först i kursen Webbteknik I, innan dess hade jag bara använt väldigt lite jQuery, men det har blivit mitt favoritspråk. Jag tror därför att denna kursen kommer bli väldigt rolig och lärorik.

Jag har försökt skriva lite Javascript i alla kurser, och i kursen Individuellt mjukvaruutvecklingsprojekt skapade jag webbplatsen/spelet Skissa och gissa i Javascript och NodeJs.

John Resigs interaktiva lektion var väldigt intressant, och perfekt för att fräsha upp kunskaperna. Jag tror jag kunde allt sedan innan, men vissa saker hade jag glömt bort.

Jag hade till exempel glömt att man kan få reda på antalet argument till en funktion med length. Det borde gå att använda för att göra currying möjligt och frivilligt för alla funktioner.

var add = enable_currying(function (a, b) {
  return a, b;
});

add(10, 5); //=> 15

var add10 = add(10);
add10(5); //=> 15

Jag brukar skapa en funktion med namnet curry:

function add(a, b) {
  return a + b;
}

var add10 = curry(add, 10);
add10(5); //=> 15

Eller göra det manuellt:

function add(a) {
  return function(b) {
    return a + b;
  }
}

var add10 = add(10);
add10(5); //=> 15

Applikationen

Jag skulle gärna vilja göra en applikation för Firefox OS. Något jag har saknat är en bra podcast-app, och jag tänkte att denna kursen kunde vara ett bra tillfälle att börja på den. Men eftersom den måste fungera i fler webbläsare blir det lite svårare.

Jag kan inte använda XMLHttpRequest för att hämta podcast-feeder från andra webbplatser utan CORS. I Firefox OS hade jag kunnat använda SystemXHR, men jag hittade Yahoos YQL som kan fungera som ett alternativ. YQL är ett SQL-liknande API för att hämta och kombinera filer, och de stödjer CORS.

En viktig funktion i en podcast-app tycker jag är möjligheten att ladda ner avsnitt för att kunna lyssna offline. I Firefox OS går det att spara på mobilens SD-kortet. Jag hittade inget alternativ som fungerar i andra webbläsare, så jag struntar i denna funktion.

För att se om applikationen ens går att skapa utan backend, har jag väldigt snabbt skapat en prototyp, och den fungerar i senaste Chrome, Safari, Firefox och borde fungera även i Internet Explorer.