I metodi Call() e apply() in Javascript
In JavaScript, i metodi call() e apply() vengono utilizzati per invocare una funzione con un argomento opzionale e un contesto specifico "this", in pratica Call e Apply mettono in collegamento le proprietà di un oggetto per una funzione. Entrambi i metodi sono abbastanza simili, con una piccola differenza..
- Nel metodo call(), gli argomenti vengono passati individualmente.
- Il metodo apply() accetta gli argomenti sotto forma di array.
Sintassi: I metodi Call() e Apply()
Il Metodo apply() (posso essere usati gli array)
const oggetto = {
fullName: function(citta, nazione) {
return this.cosa + " " + this.qualita + "," + citta + "," + nazione;
}
}
const oggetto1 = {
cosa:"pellami",
qualita: "ottimi"
}
console.log(oggetto.fullName.apply(oggetto1, ["Solofra", "Italia"]));
//output : "pellami ottimi,Solofra,Italia"
Il Metodo apply() (posso essere usati gli array)
const oggetto = {
oggettointero: function(citta, nazione) {
return this.cosa + " " + this.qualita + " " + citta + " " + nazione;
}
}
const oggetto1 = {
cosa:"pellami",
qualita: "ottimi"
}
const oggetto2 = {
cosa:"pellami",
qualita: "pessimi"
}
console.log(oggetto.oggettointero.call(oggetto2,"Solofra","Italia"));
//output: pellami pessimi Solofra Italia
Esempio di Metodo call() e apply() in Javascript
Mario acquista una villetta che costa 325560€ versa subito 135000€ e il resto viene diviso in 96 Rate, quanto dovrà pagare Mario?.
testo di esempio .testo di esempio .testo di esempio .testo di esempio .testo di esempio .
testo di esempio .testo di esempio .testo di esempio .testo di esempio .testo di esempio .
testo di esempio .testo di esempio .testo di esempio .testo di esempio .testo di esempio .
Codice della lezione: Funzioni in Javascript
// Il metodo Call » call mette in collegamento (un singolo valore)
const spedizioni = {
costoSpedizioni: function(citta, nazione) {
return this.costofisso + this.costovariabile + " per " + citta + " in " + nazione;
}
};
const spedizione1 = {
costofisso:10,
costovariabile:50
};
const spedizione2 = {
costofisso:10,
costovariabile:90
};
document.getElementById("txtID1").innerHtml = spedizioni.costoSpedizioni.call(spedizione1,"Salerno","Italia");
document.getElementById("txtID1").innerHtml = spedizioni.costoSpedizioni.call(spedizione2,"Milano","Italia");
// Il metodo Apply » apply mette in collegamento (più valori con gli [array])
const prezzo = {
prezzoMaggiorato: function(originalPrice, maggiorazione) {
return "A causa degli aumenti della benzina il prezzo del prodotto è di " + ( originalPrice + maggiorazione ) + "€ , per " + this.citta + " in " + this.nazione;
}
}
const zona1 = {
citta:"Roma",
nazione: "Italia"
}
const zona2 = {
citta:"Chania",
nazione: "Grecia"
}
document.getElementById("txtID3").innerHtml = prezzo.prezzoMaggiorato.apply(zona1, [50,10]);
document.getElementById("txtID4").innerHtml = prezzo.prezzoMaggiorato.apply(zona2, [50,80]);