JavaScript Flashcards

1
Q

HOF

Higher Order Functions

A

Funkcije koje ispunjavaju jedan od dva kriterijuma:
1. Primaju funkciju kao argument
2. Vraćaju funkciju kao rezultat

One omogućavaju tretiranje funkcija kao first class citizens što znači dase funkcije mogu prosleđivati, čuvati u promenljivima ili vraćati kao rezultati funkcija

function applyOperation(num1, num2, operation) {
return operation(num1, num2);
}

// Primer funkcija koje se prosleđuju kao argumenti
function add(a, b) {
return a + b;
}

function multiply(a, b) {
return a * b;
}

// Korišćenje
console.log(applyOperation(5, 3, add)); // Rezultat: 8
console.log(applyOperation(5, 3, multiply)); // Rezultat: 15

Na backend strani HOF se koriste za kreiranje middleware-a
map(), filter() i reduce() su odlični primeri HOF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

map()

A

Metoda ugrađena u JS koja se koristi za kreiranje novog niza tako što primenjuje funkciju na svaki element postojećeg niza. Ona ne menja originalni niz, već vraća novi niz sa transformisanim podacima.

array.map(callback(element, index, array), thisArg)
array.map(callback(element))
index, array i thisArg su opcioni

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Prototype Chaining

A

Object() je konstruktorska funkcija koja se može smatrati majkom svih objekata. Svi objekti u JS su nastali od ove funkcije. Konstruktorska funkcija ima razne metode i dva svojstva:
1. Object.length (čudno svojstvo, uvek vraća 1)
2. Object.prototype - ovo svojstvo konstruktorske funkcije Object() je tipa objekat i zaduženo je da prosleđuje metode i svojstva svim novogenerisanim objektima

Kada se kreira objekat on dobije privatno svojstvo [[Prototype]] kojem se pristupa preko __proto__ i ono pokazuje na Object.prototype objekat

const obj = {}; // Kreiranje objekta literalom
console.log(obj.__proto__ === Object.prototype); // true
console.log(obj.constructor === Object); // true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Object.prototype

A

SVOJSTVA:
1. .constructor
2. __proto__
METODE:
1. hasOwnProperty()
2. isPrototypeOf()
3. propertyIsEnumerable()
4. toString()
5. valueOf()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

filter()

A

Metoda koja omogućava kreiranje novog niza filtriranjem elemenata iz postojećeg niza na osnovu datog uslova

const newArray = array.filter(callback(element, index, array), thisArg);

Ne menja originalni niz i vraća originalni niz

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

every() and some()

A

Metode koje se koriste za proveru elemenata u nizu na osnovu logike definisane u callback funkciji. Vraćaju true ili false.

array.every(callback(element, index, array), thisArg)
array.some(callback(element, index, array), thisArg)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

call(), apply() i bind()

A

Metode koje omogućavaju eksplicitno postavljanje konteksta (this) za funkcije.

call():

func.call(thisArg, arg1, arg2, …)

call() se pored promene konteksta (this) može koristiti i za pozajmljivanje metoda. Jedan objekat može koristiti metodu drugog objekta.

const person1 = { name: “Maja” };
const person2 = { name: “Nikola” };

function introduce() {
console.log(Hello, I am ${this.name}.);
}

introduce.call(person1); // Hello, I am Maja.
introduce.call(person2); // Hello, I am Nikola.

apply()

Gotovo identična metodi call() ali se argumenti prosleđuju kao niz

func.apply(thisArg, [arg1, arg2, …])

bind()

Ne poziva odmah funkciju kao call() i apply()

func.bind(thisArg, arg1, arg2, …)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

reduce()

A

reduce() metoda prolazi kroz svaki element niza, koristi funkciju koju definišemo da ažurira akumulator (vrednost koja se prenosi kroz iteracije) i vraća konačni rezultat nakon završetka tih iteracija

Get a single value from an array.
Reduce into single value.

array.reduce((accumulator, currentValue) => {
//logika
return accumulator;
}, initialValue)

Primer:

numbers.reduce((acc, num) => {
return acc+num;
}, 0)

Ako izostavimo initialValue, 1. element niza je initial value

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

reduce() under the hood

A

function(array, callback, initialValue) {
let accumulator = initialValue;
let startIndex =0;

if(accumulator == undefined) {
accumulator = array[0];
startIndex =1;
}

for(let i= startIndexl i <= array.length; i++) {
accumulator = callback(accumulator, array[i], i, array)
}
return accumulator
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly