Sobes.tech
Middle

Ինչ է անում և ինչու է անհրաժեշտ function.prototype.bind գործառույթը։

sobes.tech AI

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

function.prototype.bind ստեղծում է նոր ֆունկցիա, որը երբ կանչվում է, ունի սահմանված this արժեքը (այսինքն, կանչի կոնտեքստը) և, ցանկության դեպքում, որոշված արգումենտների հավաքածու, որոնք նախորդում են կանչի ժամանակ փոխանցված այն արգումենտներին:

Ի՞նչ է դա անհրաժեշտ:

  1. Կոնտեքստի (this) ամրապնդում: Հատկապես օգտակար է ասինխրոն գործառույթներում, իրադարձությունների մշակողներում կամ օբյեկտների մեթոդները որպես callback փոխանցելիս, որտեղ this-ի ստանդարտ վարքագիծը կարող է փոխվել: bind ապահովում է, որ մեթոդը կիրականացվի սկզբնական օբյեկտի կոնտեքստում:
class MyClass {
  constructor() {
    this.name = 'MyClass Օբյեկտ';
  }

  greet() {
    console.log(`Ողջույն, ${this.name}`);
  }
}

const instance = new MyClass();
const greetMethod = instance.greet;

// greetMethod-ը կանչվում է գլոբալ կոնտեքստում (կամ strict ռեժիմում `undefined`), `this`-ը չի լինի MyClass
greetMethod(); // Արտածում: Ողջույն, undefined (կամ սխալ)

const boundGreetMethod = instance.greet.bind(instance);

// boundGreetMethod-ը կանչվում է `instance` կոնտեքստով
boundGreetMethod(); // Արտածում: Ողջույն, MyClass Օբյեկտ

Օրինակ՝ մասամբ կիրառություն:

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

const multiplyByTwo = multiply.bind(null, 2); // Առաջին արգումենտը սահմանում ենք որպես 2

console.log(multiplyByTwo(5)); // Արտածում: 10 (նույն է, ինչ `multiply(2, 5)`)