জাভাস্ক্রিপ্টে apply
একটি শক্তিশালী মেথড যা ফাংশনের this
কনটেক্সট নির্দিষ্ট করে এবং একটি অ্যারে বা অ্যারের মত অবজেক্টের আর্গুমেন্টের মাধ্যমে ফাংশন কল করতে ব্যবহৃত হয়। এটি বিশেষ করে তখন উপকারী যখন আপনি ডাইনামিক্যালি ফাংশনের আর্গুমেন্টগুলি নির্ধারণ করতে চান।
apply
মেথড কি?apply
মেথডটি Function.prototype
এর একটি মেথড, যা যেকোনো ফাংশনের সাথে ব্যবহার করা যেতে পারে। এটি একটি ফাংশনকে নির্দিষ্ট this
মান সহ কল করতে এবং আর্গুমেন্টগুলিকে একটি অ্যারে বা অ্যারের মত অবজেক্ট হিসেবে পাস করতে দেয়।
functionName.apply(thisArg, [argsArray]);
functionName
: যে ফাংশনটি কল করতে চান।thisArg
: ফাংশনের this
কনটেক্সট নির্ধারণ করে।argsArray
: একটি অ্যারে বা অ্যারের মত অবজেক্ট, যা ফাংশনের আর্গুমেন্ট হিসেবে পাস করা হয়।apply
এবং call
এর মধ্যে পার্থক্যapply
এবং call
উভয়ই ফাংশনকে নির্দিষ্ট this
কনটেক্সটে কল করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে মূল পার্থক্য হলো আর্গুমেন্ট পাস করার পদ্ধতি:
call
: আর্গুমেন্টগুলি আলাদাভাবে পাস করা হয়।
function greet(greeting, punctuation) {
console.log(`${greeting}, ${this.name}${punctuation}`);
}
const person = { name: "Alice" };
greet.call(person, "Hello", "!"); // আউটপুট: Hello, Alice!
apply
: আর্গুমেন্টগুলি একটি অ্যারের মাধ্যমে পাস করা হয়।
function greet(greeting, punctuation) {
console.log(`${greeting}, ${this.name}${punctuation}`);
}
const person = { name: "Bob" };
greet.apply(person, ["Hi", "."]); // আউটপুট: Hi, Bob.
call
এ আর্গুমেন্টগুলি আলাদা আলাদা পাস করতে হয়, যেখানে apply
এ একটি অ্যারে বা অ্যারের মত অবজেক্ট ব্যবহার করে একসাথে পাস করতে হয়।apply
মেথডের উদাহরণMath.max
ফাংশনটি একটি সংখ্যার তালিকার মধ্যে সর্বোচ্চ মান নির্ধারণ করে। যদি আপনার কাছে একটি অ্যারে থাকে, তাহলে apply
ব্যবহার করে আপনি সহজেই সর্বোচ্চ মান পেতে পারেন।
const numbers = [5, 6, 2, 3, 7];
// Math.max ব্যবহার করে সর্বোচ্চ সংখ্যা খুঁজে বের করা
const max = Math.max.apply(null, numbers);
console.log(max); // আউটপুট: 7
ব্যাখ্যা: এখানে, Math.max
ফাংশনটিকে apply
ব্যবহার করে কল করা হয়েছে এবং numbers
অ্যারে কে আর্গুমেন্ট হিসেবে পাস করা হয়েছে। thisArg
হিসেবে null
ব্যবহার করা হয়েছে কারণ Math.max
এর জন্য this
এর প্রয়োজন নেই।
this
কনটেক্সট পরিবর্তন করাconst person = {
name: "Charlie",
greet: function(greeting) {
console.log(`${greeting}, my name is ${this.name}.`);
}
};
const anotherPerson = { name: "Dave" };
// `greet` মেথডটিকে `anotherPerson` এর কনটেক্সটে কল করা
person.greet.apply(anotherPerson, ["Hi"]); // আউটপুট: Hi, my name is Dave.
ব্যাখ্যা: এখানে, person.greet
ফাংশনটি apply
ব্যবহার করে anotherPerson
এর কনটেক্সটে কল করা হয়েছে। ফলে, this.name
anotherPerson
এর name
প্রপার্টি নির্দেশ করে।
function sum(a, b, c) {
return a + b + c;
}
const numbers = [1, 2, 3];
// `sum` ফাংশনটি `apply` ব্যবহার করে কল করা
const result = sum.apply(null, numbers);
console.log(result); // আউটপুট: 6
ব্যাখ্যা: এখানে, sum
ফাংশনটি apply
ব্যবহার করে কল করা হয়েছে এবং numbers
অ্যারে কে আর্গুমেন্ট হিসেবে পাস করা হয়েছে। thisArg
হিসেবে null
ব্যবহার করা হয়েছে কারণ sum
ফাংশনের জন্য this
এর প্রয়োজন নেই।
apply
মেথডের ব্যবহার ক্ষেত্রMath.max
, Math.min
ইত্যাদি ফাংশনগুলি অ্যারে সহ কাজ করতে apply
মেথডটি অত্যন্ত উপকারী।
অবজেক্টের মেথডকে অন্য অবজেক্টের কনটেক্সটে কল করতে apply
ব্যবহার করা যায়।
যখন ফাংশনের আর্গুমেন্টের সংখ্যা পূর্বনির্ধারিত না থাকে, তখন apply
ব্যবহার করে একটি অ্যারে থেকে আর্গুমেন্ট পাস করা সহজ হয়।
apply
এর সীমাবদ্ধতাapply
ব্যবহার করলে পারফরম্যান্সে প্রভাব পড়তে পারে, কারণ এটি অ্যারের সমস্ত উপাদানকে আলাদাভাবে প্রক্রিয়া করে।apply
মেথডের আর্গুমেন্টের সংখ্যায় সীমা থাকতে পারে, যা অ্যারে অত্যধিক বড় হলে সমস্যা সৃষ্টি করতে পারে।জাভাস্ক্রিপ্টে apply
মেথডটি ফাংশনের this
কনটেক্সট নির্ধারণ এবং একটি অ্যারে বা অ্যারের মত অবজেক্টের আর্গুমেন্টের মাধ্যমে ফাংশন কল করার জন্য ব্যবহৃত হয়। এটি বিশেষ করে ম্যাথ ফাংশনগুলির সাথে কাজ করার সময় এবং ফাংশনের কনটেক্সট পরিবর্তন করার ক্ষেত্রে অত্যন্ত উপকারী। call
মেথডের মতোই, apply
ও ফাংশন কলের সময় this
এর মান নির্ধারণে গুরুত্বপূর্ণ ভূমিকা পালন করে। তবে, এর কিছু সীমাবদ্ধতা রয়েছে, যেমন পারফরম্যান্স এবং আর্গুমেন্টের সংখ্যায় সীমা, যা বিবেচনা করা উচিত।
টিপস:
apply
ব্যবহার করা সহজ।apply
ভালোভাবে কাজ করে।spread
অপারেটর (...
) ব্যবহার করা যেতে পারে, যা আধুনিক জাভাস্ক্রিপ্টে একটি ভালো বিকল্প।apply
এর সাথে bind
ব্যবহারbind
মেথডের মাধ্যমে একটি নতুন ফাংশন তৈরি করা যায় যা নির্দিষ্ট this
কনটেক্সটে কল করা হয়, এবং apply
এর মাধ্যমে সেই ফাংশনটি কল করা যায়।
const person = {
name: "Eve",
introduce: function(city, country) {
console.log(`Hi, I'm ${this.name} from ${city}, ${country}.`);
}
};
const anotherPerson = { name: "Frank" };
// `introduce` ফাংশনটিকে `anotherPerson` এর কনটেক্সটে `bind` করে একটি নতুন ফাংশন তৈরি করা
const introduceFrank = person.introduce.bind(anotherPerson);
// `apply` ব্যবহার করে `introduceFrank` ফাংশন কল করা
introduceFrank.apply(null, ["New York", "USA"]); // আউটপুট: Hi, I'm Frank from New York, USA.
ব্যাখ্যা: এখানে, person.introduce
ফাংশনটি anotherPerson
এর কনটেক্সটে bind
করা হয়েছে, যা একটি নতুন ফাংশন introduceFrank
তৈরি করে। এরপর, introduceFrank
ফাংশনটি apply
ব্যবহার করে কল করা হয়েছে এবং আর্গুমেন্টগুলি একটি অ্যারে হিসেবে পাস করা হয়েছে।
apply
মেথডটি জাভাস্ক্রিপ্টে ফাংশন কলের সময় this
কনটেক্সট নির্ধারণ এবং অ্যারের মাধ্যমে আর্গুমেন্ট পাস করার জন্য একটি কার্যকর পদ্ধতি। এর মাধ্যমে ফাংশনগুলিকে আরও নমনীয় এবং পুনরায় ব্যবহারযোগ্য করা যায়, যা কোডের সংগঠন এবং কার্যকারিতা বৃদ্ধি করে।
common.read_more