Deo zbornika Učimo Javascript

Provera nasleđivanja

Nekad je potrebno proveriti da li je objekat instanca određene klase, kao i na osnovu koje klase je kreiran.

Operator instanceof

Pomoću operatora instanceof, možemo proveriti da li objekat nasleđuje određenu klasu:

class Junak {}
class Hobit extends Junak {}

const bilbo = new Hobit()

console.log(bilbo instanceof Hobit)
console.log(bilbo instanceof Junak)
console.log(bilbo instanceof Object)

Svaki objekat u Javascriptu je instanca Object konstruktora, koji se nalazi na vrhu hijerarhije nasleđivanja.

Svojstvo constructor

Kada se objekat kreira, u pozadini mu se dodeljuje svojstvo constructor, koje pokazuje na klasu pomoću koje je kreiran. Na primer:

class Patuljak {}

const gimli = new Patuljak()

console.log(gimli.constructor)

Pošto svojstvo constructor sadrži referencu na klasu, možemo pozvati tu klasu da bismo napravili novi objekat. Kao kada bismo rekli: „Ne zanima me kako je objekat kreiran, ali hoću još jedan takav“:

class Patuljak {}

const gimli = new Patuljak()
const gloin = new gimli.constructor()

console.log(gloin instanceof Patuljak)

Krajnji predak

Za svaki objekat kreiran bez neke određene klase, konstruktor je Object, koji se nalazi na vrhu hijerarhije nasleđivanja:

const covek = {}

console.log(covek.constructor)