Objekter er datatyper som kan inneholde data i form av variable og funksjoner.
Objekter defineres med klasse-navn.
<script>
var minBil = {}; // Et tomt objekt.
</script>
Objekter kan lages med {krøllparenteser} …
… eller med new Object.
<script>
var minBil = new Object; // Et tomt objekt.
</script>
<script>
var minBil = { farge: "lilla" };
// Objektet minBil sin farge er lilla.
</script>
Et bilobjekt hvor eneste egenskap er farge.
For å hente ut data kan det brukes prikk-notasjon.
<script>
function visFarge()
{ alert(minBil.farge); }
</script>
<input
type="button"
value="Vis farge"
onclick="visFarge();">
… eller parentesnotasjon.
<script>
function visEgenskap(egenskap)
{
var f = minBil[egenskap];
alert(f);
}
</script>
<input
type="button"
value="Vis egenskap"
onclick="visEgenskap('farge');">
… eller med eval().
<script> # eval.
function visBil(egenskap)
{
var bilegenskap = "minBil." + egenskap;
alert (eval (bilegenskap));
}
</script>
<input
type="button"
value="Vis bilegenskap"
onclick="visBil('farge');">
Data kan også hentes ut vha. funksjoner inne i objektet.
<script>
var minBil =
{
merke: "Nissan",
farge: "lilla",
// Objekter kan inneholde funksjoner.
vismerke: function() {
return this.merke;
// Returnerer dette objektets sitt merke.
}
};
</script>
Her er et objekt med to egenskaper og en funksjon.
Knappekoden:
<input type="button" value="minBil.vismerke()" onclick="alert(minBil.vismerke());">
Egenskapene separeres med komma.
Funksjonen oppfører seg som en variabel.
‹this› må brukes for å angi at det er dette objektets verdier en vil ha tak i.
‹this› peker på objektet.
(Merk at ‹this› alene peker på nettleservinduet.)
<script>
var minBil =
{
merke: "Nissan",
farge: "lilla",
// Objekter kan inneholde funksjoner.
settmerke: function()
{
// Setter bilmerket til Opel og returnerer merket.
return this.merke = "Opel";
}
};
</script>
<input type="button" value="minBil.settmerke()" onclick="alert(minBil.settmerke());">
Fordelen med å bruke funksjoner
for å hente ut og legge inn data i objekter
er at funksjoner antas å være fast
over den tiden som objektet vedlikeholdes.
Innholdet i objektet,
slik som f.eks. navn på variabler,
osv. kan endres uten at
en trenger å endre konteksten.
Egenskaper kan tilføyes i runtime.
<script>
var minBil2 = {}; // Et tomt bil-objekt.
</script>
<script>
function settmerke()
{
minBil2.merke = "Datsun";
// En egenskap tilføyes under kjøring.
alert("Merke er satt.");
}
</script>
<input type="button" value="Sett bilmerke" onclick="settmerke();">
<script>
function vismerke(egenskap)
{alert(minBil2.merke);}
</script>
<input type="button"
value="Vis bilmerke"
onclick="vismerke();">
Funksjoner kan tilføyes i runtime.
<script>
function settfunksjon()
// Setter inne en funksjon i foregående objekt.
{
minBil.vismerke = function ()
{ alert(this.merke) };
};
</script>
<input type="button" value="Sett inn funksjon" onclick="settfunksjon();">
<script> // Objekter kan inneholde objekter.
var person =
{
navn: "Nils Martin",
bil: { merke: "Nissan" }
};
</script>
<script>
function navn()
{ alert(person.navn); }
function bil()
{ alert(person.bil.merke); }
</script>
Klasser er en ny egenskap i JS6.
<script>
class person {}
</script>
Funksjoner er objekter.
Funksjoner kan lagres i en variabel, array eller et objekt.
<script>
function person6()
{
this.navn = "Nils Martin";
}
</script>
<script>
var p6 = new person6();
function navn6()
{ alert(p6.navn); }
</script>