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