Objekter i Javascript

đïžJavascript og objektet
Objektene i javascript er i praksis lik datastrukturen ordbok (đ dictionary). Javascript har vel egentlig ingen
formening om klasser slik klassiske objektorienterte sprÄk har. Joda.. vi har selvfÞlgelig nÞkkelordet class
og uteseendet
pĂ„ det som kommer etter, men egentlig sĂ„ er jo dette bare syntaktisk sukker đ som skjuler litt av virkeligheten.
Javascript er prototypisk, slik at klassen er ikke en klasse slik som i klassisk OOP: en oppskrift pÄ hva et objekt er, men mer som en levende ting som det nye objektet har en link til, eller en relasjon med. Prototypen kan pÄvirke tilstanden til andre objekter og lever i beste velgÄende nÄr programmet kjÞrer og kan bÄde fÄ nye og bli fratatt gamle metoder.
Den levende modellen blir liggende bak i prototypekjeden.
â Hva er en prototypekjede
Prototype Chain.. prototypekjede.. jeg prĂžver meg.. đș
NÄr du f.eks lager objekter eller arrays (lister? matriser? hva blir egentlig ett godt norks ord for det?) i Javascript, sÄ delegeres oppfÞrselen fra prototypen. Den arver pÄ en mÄte det som trengs:
const catArray = ['Pelle Katt', 'Pusur', 'Tom'];
og sÄ kjÞrer du Object.getPrototypeOf(catArray)
:

Lots of goodies.
Prototypekjeden er altsĂ„ slik vi fĂ„r til arv i Javascript. Vi bygger nye objekt basert pĂ„ gamle. PĂ
den mÄten kan vi ordne til
noe OOP-lignende greier. Du nÄr, som du ser, prototypen via Object.getPrototypeOf(objektetDuVilSjekkeUt)
, eller evt. objektetDuVilSjekkeUt.__proto__
.

đïž Lage objekter i Javascript
1ïžâŁ Object constructor:
Trenger vel ikke si sÄ mye?
var object = new Object();
2ïžâŁ create
meteoden pÄ Object
:
Her kan du ogsÄ f.eks lage et objekt uten en prototype (altsÄ uten Ä linke til Object.prototype
)
var object = Object.create(null);

3ïžâŁ Object literal, bokstavelig talt:
var object = {};
4ïžâŁ Med new
operatĂžren:
Dette er i hovedsak det class
gjĂžr i bakkanten.
function Cat(name) {
this.name = name;
this.sound = function () {
console.log('mjau');
}
}
const pelle = new Cat("Pelle");
Hvis vi kjĂžrer Object.getPrototypeOf(catObj);
nÄ:

For Ä bygge litt videre pÄ den med prototypekjeden og levende objekter i kjÞretiden og sÄ videre:
Cat.prototype.claws = true;
ville fĂžrt til at pelle
ogsÄ fikk denne propertien.
5ïžâŁ Med `class' syntaksen
Denne kom i ES6 og ligner pÄ det man kjenner igjen fra den tradisjonelle objektorienterte programmeringen med klasser som en oppskrift.
class Cat {
constructor(name) {
this.name = name;
this.sound = function () {
console.log('mjau');
};
}
}
const pelle = new Cat("Pelle");
Den er, som du nĂ„ vet, helt lik 4ïžâŁ đ