Kategori:JavaScript
Fra CodeWiki
| JavaScript | |
|---|---|
| Kom i | 1995 |
| Designet av | Brendan Eich |
| Typer | Dynamisk / svak |
| Dialekter | ECMAScript, LiveScript, JScript, JScript.net |
| Påvirket av | Scheme, C, Perl, Java, Python |
JavaScript er et prototype-basert skripting-språk skrevet av Brendan Eich. Det er mest brukt innen webutvikling, og benyttes for kode som skal kjøres på klient-siden (i browseren). JavaScript har lite til felles med Java, så navnet kan virke noe misvisende.
JavaScript har sin opprinnelse fra Netscape, da utviklerne ønsket muligheten for å kjøre kodesnutter på klient-siden. Opprinnelig lignet språket mest på Scheme, og hadde navnet LiveScript. Ledelsen mente derimot at Scheme-syntaksen var for obskur, og dermed ble syntaksen endret til å ligne mer på C. Navneskiftet skjedde etter at Netscape bestemte seg for å samarbeide med Sun for å få integrert Java i nettleseren sin.
JavaScript er et dynamisk språk, altså er ikke en variabel knyttet til en bestemt type. Det er objekt-orientert, men har ikke klasser. I tillegg har det elementer fra funksjonell programmering.
Utifra JavaScript (Netscapes opprinnelige implementasjon) er det utviklet en standard som heter ECMAScript. Microsofts implementasjon av JavaScript heter JScript og ble opprettet før ECMAScript ble lansert som en standard. Komitéen som står bak ECMAScript inneholder medlemmer fra bl.a. Mozilla, Microsoft og Sun.
Innhold |
Kode-eksempler
Funksjoner
I JavaScript er funksjoner førsteklasses verdier (kan tilordnes variabler, sendes som argument til andre funksjoner, og returneres fra funksjoner). Den vanlige måten å definere en funksjon på er følgende:
function hello(who = "World") { alert("Hello, " + who + "!"); }
… men dette er bare «syntaktisk sukker» for:
var hello = function(who = "World") { alert("Hello, " + who + "!"); }
Følgende illustrerer funksjonelle aspekter ved JavaScript (funksjoner som førsteklasses verdier og closures):
function leggTilN(n) { return function(i) { return n + i }; } var plussFem = leggTilN(5); plussFem(8); // => 13 leggTilN(5)(5); // => 10 function iteratorForArray(arr) { // Returner en anonym funksjon med tilgang til variabelen arr return function(fn) { // funksjonen som returneres er derfor en closure for (var i = 0; i < arr.length; i++) { fn(arr[i]); } }; } var iterator = iteratorForArray([1,2,3,4,5]); // Returnerer en funksjon til iterator iterator(alert); // kaller alert for hvert element i arrayen over. iterator(function (i) { // kjører den gitte anonyme funksjonen for alle elementer i arrayen over alert("x2: " + (i * 2)); });
Objekter og prototyper
JavaScript har «object literals», som gjør at objekter kan opprettes direkte i språket (på samme måten som mange språk har array-literals som gjør at man slipper å først opprette en tom array for så å fylle den med ett objekt om gangen). I eksempelet under opprettes to objekter, ola og kari, og «instanse-variabler» settes (kalles properties i JavaScript):
var ola = {fornavn: "Ola", etternavn: "Nordmann", alder: 40} var kari = { fornavn: "Kari", etternavn: "Nordmann", alder: 40 }
Siden disse to objektene er såpass like kunne vi ha brukt prototype-teknikken som finnes i JavaScript:
var ola = {fornavn: "Ola", etternavn: "Nordmann", alder: 40} var kari = {} kari.prototype = ola; kari.fornavn = "Kari";
Ved å si at ola-objektet er prototypen til kari-objektet, vil oppslag av properties som ikke er definert i kari-objektet bli videresendt til ola-objektet.
kari.etternavn // => "Nordmann"
Metoder kan legges til i objektene ved å opprette en property med en funksjon som verdi:
ola.toString = function() { return this.fornavn + " " + this.etternavn + " er " + this.alder + " år gammel"; } ola.toString() // => "Ola Nordmann er 40 år gammel" kari.toString() // => "Kari Nordmann er 40 år gammel"
Andre eksempler
Artikler i kategorien «JavaScript»
Det er 3 artikler i denne kategorien.
