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