Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Advanced
  5. Q24. What is the difference between call(), apply(), and bind()?
JavaScriptAdvanced

Q24. What is the difference between call(), apply(), and bind()?

তিনটিই this বদলায়, কিন্তু আর্গুমেন্ট নেওয়ার নিয়ম ও ফেরত দেওয়া জিনিস আলাদা।

তিনটিই Function.prototype-এর method এবং তিনটিই ফাংশনের `this` কে নির্দিষ্ট কোনো মানে বেঁধে দেয়। পার্থক্য হলো আর্গুমেন্ট কীভাবে দেওয়া হয় এবং ফলাফল কী ফেরত হয়।

তিনটি পাশাপাশিjavascript
javascript
function greet(greeting, punctuation) {
  return greeting + ", " + this.name + punctuation;
}

const user = { name: "Rahim" };

// call — আর্গুমেন্ট আলাদা করে
console.log(greet.call(user, "হ্যালো", "!"));
// "হ্যালো, Rahim!"

// apply — আর্গুমেন্ট array বা arguments হিসেবে
console.log(greet.apply(user, ["হ্যালো", "!"]));
// "হ্যালো, Rahim!"

// bind — this বেঁধে রেখে নতুন ফাংশন ফেরত দেয়
const boundGreet = greet.bind(user, "হ্যালো");

console.log(boundGreet("!")); // "হ্যালো, Rahim!"

ধাপে ধাপে — call ও apply ফাংশনটি সঙ্গে সঙ্গে চালায় এবং ফলত্র ফেরত দেয়, তাই console.log-এর ভিতরে লেখা যায়। আর bind চালায় না — সে শুধু this ও প্রথম কয়েকটা আর্গুমেন্ট মনে রেখে নতুন একটি ফাংশন বানিয়ে ফেরত দেয়, যেটা পরে ডাকা হয়।

Arrow function-এর নিজস্ব this নেই, তাই এদের কোনোটিই কাজ করে না।

arrow function-এ কাজ করে নাjavascript
javascript
const obj = {
  name: "Rahim",
  arrow: () => this.name, // this ধার করে নেয়
  regular: function () {
    return this.name;
  },
};

console.log(obj.regular.call(obj));  // "Rahim" — কাজ করে
console.log(obj.arrow.call(obj));    // undefined — কাজ করে না

bind কোনো method হারানোর সমস্যা ঠিক করতে সবচেয়ে বেশি ব্যবহার হয় — setTimeout, event handler বা addEventListener-এ this ঠিক থাকে না।

bind কোথায় কাজে লাগেjavascript
javascript
function show() {
  console.log(this.name);
}

const user = { name: "Rahim", show };

// ছাড়া দিলে this হারিয়ে যায়
setTimeout(user.show, 1000);

// bind করলে ঠিক থাকে
setTimeout(user.show.bind(user), 1000);

// arrow দিয়ে ও একই কাজ হয়
setTimeout(() => user.show(), 1000);
Methodআর্গুমেন্টফলত্রফলাফল
callআলাদা করেসঙ্গে সঙ্গে চালায়ফাংশনের ফলত্র
applyarray হিসেবেসঙ্গে সঙ্গে চালায়ফাংশনের ফলত্র
bindআলাদা করেচালায় নানতুন ফাংশন
মজার তথ্য

Math.max বা Array.prototype এর মতো ফাংশনে apply দিয়ে লিখলে যেকোনো ধরনের মানের সাথে কাজ করানো যায় — Math.max.apply(null, arr) লেখা হয় তার বদলে এখন Math.max(...arr) লেখা হয়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Advanced বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com