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-ებში და მოვალეობის გამართლებაში.