Middle
Ką daro ir kam reikalinga funkcija function.prototype.bind?
sobes.tech AI
Atsakymas iš AI
function.prototype.bind sukuria naują funkciją, kuri, iškvietus, turi nustatytą this reikšmę (t. y. iškvietimo kontekstą) ir, pageidaujant, tam tikrą argumentų rinkinį, kuris yra iš anksto nustatytas ir eina prieš tuos, kurie perduodami iškvietimo metu.
Kam tai naudinga:
- Konteksto (this) fiksavimas: Ypač naudinga asinchroninėse operacijose, įvykių tvarkytojams ar objektų metodų perdavimui kaip callback'ų, kur standartinis
thiselgesys gali keistis.bindužtikrina, kad metodas bus vykdomas originalaus objekto kontekste. - Funkcijų dalinė taikymas (Currying): Leidžia sukurti naują funkciją su iš anksto nustatytais pradžios argumentais.
Pavyzdys konteksto fiksavimui:
class MyClass {
constructor() {
this.name = 'MyClass Instance';
}
greet() {
console.log(`Labas, iš ${this.name}`);
}
}
const instance = new MyClass();
const greetMethod = instance.greet;
// greetMethod iškviečiamas globaliame kontekste (arba `undefined` strict režime), `this` nėra MyClass
greetMethod(); // Išvestis: Labas, iš undefined (arba klaida)
const boundGreetMethod = instance.greet.bind(instance);
// boundGreetMethod iškviečiamas su `instance` kontekstu
boundGreetMethod(); // Išvestis: Labas, iš MyClass Instance
Dalinis taikymas pavyzdys:
function multiply(a, b) {
return a * b;
}
const multiplyByTwo = multiply.bind(null, 2); // Pirmasis argumentas nustatytas kaip 2
console.log(multiplyByTwo(5)); // Išvestis: 10 (tas pats kaip multiply(2, 5))