Deo zbornika Napredni Javaskript
Ispitivanje prototipa
Postoji više načina da ispitamo koji objekat je korišten kao prototip novokreiranog objekta.
isPrototypeOf()
Svi objekti imaju metod isPrototypeOf()
, koji odgovara da li se određeni objekat koristi kao prototip drugog. Na primer, imamo objekat majmun
:
const majmun = {
hrana: 'banane',
dise: 'vazduh'
}
Onda napravimo konstruktorsku funkciju Covek()
i postavimo prototype
da ukazuje na objekat majmun
:
function Covek(ime) {
this.ime = ime
}
Covek.prototype = majmun
Kada kreiramo novi objekat pomoću konstruktorske funkcije Covek
, njegov prototip će biti majmun
, što možemo proveriti pomoću metode isPrototypeOf()
:
const majmun = {
hrana: 'banane',
dise: 'vazduh'
}
function Covek(ime) {
this.ime = ime
}
Covek.prototype = majmun
const darvin = new Covek('Darvin')
console.log(majmun.isPrototypeOf(darvin))
Object.getPrototypeOf()
Do prototipskog objekta možemo doći pomoću metode Object.getPrototypeOf()
, na sledeći način:
const majmun = {
hrana: 'banane',
dise: 'vazduh'
}
function Covek(ime) {
this.ime = ime
}
Covek.prototype = majmun
const darvin = new Covek('Darvin')
console.log(Object.getPrototypeOf(darvin) === majmun)
console.log(Object.getPrototypeOf(darvin).hrana)
U prastarim okruženjima (pre ES5), koja nemaju metod Object.getPrototypeOf()
, možemo da koristimo specijalno svojstvo __proto__
u istu svrhu:
darvin.__proto__=== majmun // true
Svojstvo __proto__
se izbacuje iz upotrebe, pa se preporučuje upoterba Object.getPrototypeOf()
.
Imajte na umu da svojstvo __proto__
nije isto što i prototype
, jer prvo je svojstvo instance, a drugo konstruktor funkcije.
Literatura
- Ved Antani, Stojan Stefanov, Objektno-orjentisan JavaScript, Beograd, 2017.