Call & Apply & Bind მეთოდები JS_ში
JavaScript-ში ფუნქციების შესრულება და მათი კონტექსტის (this-ის მნიშვნელობის) მართვა ერთ-ერთი ყველაზე მნიშვნელოვანი საკითხია. ხშირად…
Call & Apply & Bind მეთოდები JS_ში

JavaScript-ში ფუნქციების შესრულება და მათი კონტექსტის (this-ის მნიშვნელობის) მართვა ერთ-ერთი ყველაზე მნიშვნელოვანი საკითხია. ხშირად გვჭირდება, რომ ერთი და იგივე ფუნქცია სხვადასხვა ობიექტზე გამოვიყენოთ, მაგრამ this-ის არასწორი მნიშვნელობის გამო კოდი არ მუშაობს ისე, როგორც ველით.
🔹 სწორედ აქ გვჭირდება call( ), apply( ) და bind( )მეთოდები!
ეს სამი მეთოდი საშუალებას გვაძლევს, გავაკონტროლოთ this-ის მნიშვნელობა და ფუნქცია სასურველ კონტექსტში გავუშვათ. მიუხედავად იმისა, რომ ისინი მსგავსად მუშაობენ, მათ შორის არსებობს მნიშვნელოვანი განსხვავებები. ამ სტატიაში განვიხილავთ, როგორ მუშაობს call, apply და bind, როდის და რატომ უნდა გამოვიყენოთ ისინი და გავაანალიზებთ პრაქტიკულ მაგალითებს. 🚀
🔹 call() მეთოდი
👉call( ) მეთოდი ფუნქციას მყისიერად უშვებს და this-ს პირველი არგუმენტით ცვლის.
📌 როგორ მუშაობს call()?
const person1 = {
name: "John",
greet(age) {
console.log(`Hello, my name is ${this.name} and I am ${age} years old.`);
}
};
const person2 = { name: "David" };
person1.greet.call(person2, 40);
🔍 რა ხდება აქ?
1️⃣ person1 ობიექტს აქვს greet() მეთოდი, რომელიც ბეჭდავს this.name-ს და იღებს age-ს.
2️⃣ person2 არის უბრალოდ ობიექტი, რომელსაც greet() ფუნქცია არ აქვს.
3️⃣ call() მეთოდის გამოყენებით, greet() ფუნქციას person2 ობიექტზე ვუშვებთ.
4️⃣ შედეგად კონსოლში ვიღებთ: ✅ "Hello, my name is David and I am 40 years old."
greet() ფუნქციას გადავცეთ ორი არგუმენტი 👇

🔹 Apply()
👉 apply() მეთოდი call()-ს ძალიან ჰგავს, მხოლოდ ერთი განსხვავებით – 📌 მეორე არგუმენტი მასივია, რომელიც ფუნქციის პარამეტრებს შეიცავს.
const person1 = {
name: "John",
greet(age, city) {
console.log(`Hello, my name is ${this.name} and I am ${age} years old from ${city}.`);
}
};
const person2 = { name: "David" };
person1.greet.apply(person2, [40, "Tbilisi"]);
🔍 რას აკეთებს apply()?
1️⃣ call()-ის მსგავსად, this მნიშვნელობას ვცვლით person2 ობიექტით. 2️⃣მეორე არგუმენტად ვაწვდით მასივს, რომელიც age და city მნიშვნელობებს შეიცავს. 3️⃣ შედეგად კონსოლში ვიღებთ: ✅ "Hello, my name is David and I am 40 years old from Tbilisi."
✨ Pro Tip: ES6-ში apply-ის ნაცვლად გამოიყენეთ ( …spread ) :
func.apply(null, [1, 2]) → func(...[1, 2])
🔹 bind() მეთოდი
👉 bind() მეთოდი არ უშვებს ფუნქციას მყისიერად, არამედ აბრუნებს ახალ ფუნქციას, რომლის this მნიშვნელობა უკვე განსაზღვრულია.
📌 როგორ მუშაობს bind()?
const person = {
name: "John",
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
};
const anotherPerson = { name: "David" };
const boundGreet = person.greet.bind(anotherPerson);
boundGreet(); // Hello, my name is David.
🔍 რას აკეთებს bind()?
1️⃣person.greet.bind(anotherPerson) ქმნის ახალ ფუნქციას, სადაც this ეხება anotherPerson-ს.
2️⃣ boundGreet-ის გამოძახებისას, this ეხება anotherPerson-ს.
3️⃣ შედეგად კონსოლში ვიღებთ: ✅ "Hello, my name is David."
💡 Tip: bind() ხშირად გამოიყენება event listener-ებში ან callback-ებში, რათა this-ის მნიშვნელობა შევინარჩუნოთ.
button.addEventListener("click", obj.handleClick); // this = button
button.addEventListener("click", obj.handleClick.bind(obj)); // სწორია
🎯 როდის გამოვიყენოთ?
- call /apply: როცა ფუნქცია მაშინვე უნდა გაეშვას ახალი კონტექსტით.
- bind : როცა გვჭირდება გამოძახების გადადება (მაგ., ივენთები, setTimeout).
JavaScript #WebDevelopment #CodingTips #React #Programming
메타데이터
- post_id
- 0c08fc961819
- slug
- ყველაფერი-რაც-უნდა-იცოდე-call-apply-bind-მეთოდების-შესახებ-js-ში-0c08fc961819
- url
- https://medium.com/@beqatavkhelidze4/%E1%83%A7%E1%83%95%E1%83%94%E1%83%9A%E1%83%90%E1%83%A4%E1%83%94%E1%83%A0%E1%83%98-%E1%83%A0%E1%83%90%E1%83%AA-%E1%83%A3%E1%83%9C%E1%83%93%E1%83%90-%E1%83%98%E1%83%AA%E1%83%9D%E1%83%93%E1%83%94-call-apply-bind-%E1%83%9B%E1%83%94%E1%83%97%E1%83%9D%E1%83%93%E1%83%94%E1%83%91%E1%83%98%E1%83%A1-%E1%83%A8%E1%83%94%E1%83%A1%E1%83%90%E1%83%AE%E1%83%94%E1%83%91-js-%E1%83%A8%E1%83%98-0c08fc961819
- canonical_url
- https://medium.com/@beqatavkhelidze4/%E1%83%A7%E1%83%95%E1%83%94%E1%83%9A%E1%83%90%E1%83%A4%E1%83%94%E1%83%A0%E1%83%98-%E1%83%A0%E1%83%90%E1%83%AA-%E1%83%A3%E1%83%9C%E1%83%93%E1%83%90-%E1%83%98%E1%83%AA%E1%83%9D%E1%83%93%E1%83%94-call-apply-bind-%E1%83%9B%E1%83%94%E1%83%97%E1%83%9D%E1%83%93%E1%83%94%E1%83%91%E1%83%98%E1%83%A1-%E1%83%A8%E1%83%94%E1%83%A1%E1%83%90%E1%83%AE%E1%83%94%E1%83%91-js-%E1%83%A8%E1%83%98-0c08fc961819
- author_url
- https://medium.com/@beqatavkhelidze4
- status
- ok
- fetched_at
- 2026-08-08 13:36:27