Sobes.tech
Middle

Պատմիր ինձ JavaScript-ում կոնտեքստը պահպանելու եղանակների մասին: bind, call, apply: Ինչն է նրանց տարբերությունը?

sobes.tech AI

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

JavaScript-ում ֆունկցիաները առաջին կարգի օբյեկտներ են և ունեն դինամիկ կանչման կոնտեքստ (this): bind, call և apply մեթոդները թույլ են տալիս կառավարել այդ կոնտեքստը:

  • call — անմիջապես կանչում է ֆունկցիան, փոխանցելով կոնտեքստը և արգումենտները առանձին:

    func.call(context, arg1, arg2);
    
  • apply — նման է call-ին, բայց արգումենտները փոխանցվում են զանգվածի տեսքով:

    func.apply(context, [arg1, arg2]);
    
  • bind — չի կանչում ֆունկցիան անմիջապես, այլ վերադարձնում է նոր ֆունկցիա՝ կապված կոնտեքստի և, ցանկության դեպքում, մասնակի կիրառված արգումենտների հետ:

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Տարբերություններ՝

  • call և apply անմիջապես կանչում են ֆունկցիան;
  • bind վերադարձնում է նոր ֆունկցիա, որը կարելի է կանչել ուշ;
  • apply-ը օգտակար է, երբ արգումենտները արդեն զանգվածում են;
  • bind-ը օգտակար է կոնտեքստը պահպանելու համար callback-ներում և իրադարձության մշակողներում։