Sobes.tech
Middle

Ի՞նչ է տարբերությունը JavaScript-ում call, apply և bind մեթոդների միջև։

sobes.tech AI

Պատասխան AI-ից

Մեթոդ Օգտագործում Տրամադրող արգումենտներ Վերադարձվող արժեքը
call Կոչում է ֆունկցիան նշված this կոնտեքստով և մեկ առ մեկ արգումենտներով։ Կատարվում է որպես առանձին արգումենտներ this կոնտեքստից հետո։ Ֆունկցիայի կատարումից արդյունքը։
apply Կոչում է ֆունկցիան նշված this կոնտեքստով և փոխանցում է արգումենտները մասիվ ձևով։ Կատարվում է որպես զանգված (կամ псевдо-մասիվ) this կոնտեքստից հետո։ Ֆունկցիայի կատարումից արդյունքը։
bind Վերադարձնում է նոր ֆունկցիա, որը երբ կանչվի, կունենա սահմանված this կոնտեքստ և, եթե անհրաժեշտ է, նախապես փոխանցված արգումենտներ։ Կատարվում է որպես առանձին արգումենտներ this կոնտեքստից հետո bind-ի կանչի ժամանակ։ Նոր ֆունկցիա, որը կապակցված է կոնտեքստին և արգումենտներին։
// Օրինակ `call`-ի օգտագործման
const obj = { name: 'Alice' };
function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}
greet.call(obj, 'Hello', '!'); // Ցուցադրում: Hello, Alice!
// Օրինակ `apply`-ի օգտագործման
const obj2 = { job: 'Developer' };
function describe(title, company) {
  console.log(`I am a ${title} at ${company}.`);
}
const args = ['Frontend', 'TechCorp'];
describe.apply(obj2, args); // Ցուցադրում: I am a Frontend at TechCorp.
// Օրինակ `bind`-ի օգտագործման
const obj3 = { city: 'New York' };
function showLocation() {
  console.log(`My city is ${this.city}.`);
}
const boundShowLocation = showLocation.bind(obj3);
boundShowLocation(); // Ցուցադրում: My city is New York.

// Օրինակ `bind`-ի հետ նախապես փոխանցված արգումենտով
const obj4 = { value: 10 };
function addValue(num) {
  console.log(this.value + num);
}
const boundAddFive = addValue.bind(obj4, 5);
boundAddFive(); // Ցուցադրում: 15