_.bind ফাংশন
Underscore.js এর _.bind() ফাংশনটি একটি ফাংশনকে নির্দিষ্ট this কনটেক্সটে বাউন্ড (bind) করতে ব্যবহৃত হয়। অর্থাৎ, আপনি যখন একটি ফাংশনকে .bind() দিয়ে কল করবেন, তখন সেই ফাংশনটি একটি নির্দিষ্ট অবজেক্টকে this হিসাবে গ্রহণ করবে, এমনকি সেই ফাংশনটি অন্য কোনো কনটেক্সটে প্রয়োগ করা হলেও।
_.bind এর মূল উদ্দেশ্য:
thisকনটেক্সট পরিবর্তন করা, যাতে ফাংশনটি নির্দিষ্ট অবজেক্টে কাজ করে।- ফাংশনকে নতুন আর্গুমেন্টসহ বাউন্ড করা।
উদাহরণ:
let person = {
name: "John",
greet: function() {
console.log("Hello, " + this.name);
}
};
let greetJohn = _.bind(person.greet, person);
greetJohn(); // "Hello, John"
এখানে, person.greet ফাংশনটিকে person অবজেক্টের this কনটেক্সটে বাউন্ড করা হয়েছে। এর মানে হল যে greetJohn ফাংশনটি যখন কল হবে, তখন this হবে person এবং এটি সঠিকভাবে name প্রপার্টি অ্যাক্সেস করতে পারবে।
_.partial ফাংশন
Underscore.js এর _.partial() ফাংশনটি একটি ফাংশনকে আংশিকভাবে প্রি-ফিল্ড (pre-filled) আর্গুমেন্ট সহ বাউন্ড করতে ব্যবহৃত হয়। এর মানে হলো আপনি ফাংশনটির কিছু আর্গুমেন্ট আগেই প্রদান করতে পারেন, এবং বাকি আর্গুমেন্ট পরে দিয়ে ফাংশনটি কল করতে পারবেন।
_.partial এর মূল উদ্দেশ্য:
- একটি ফাংশনের আর্গুমেন্ট প্রি-ফিল্ড করা।
- ফাংশনকে আংশিকভাবে প্রস্তুত করা, যাতে পরে আরও আর্গুমেন্টের সাথে এটি কল করা যায়।
উদাহরণ:
let greet = function(greeting, name) {
console.log(greeting + ", " + name);
};
// আংশিকভাবে প্রি-ফিল্ড আর্গুমেন্ট
let greetHello = _.partial(greet, "Hello");
greetHello("John"); // "Hello, John"
greetHello("Jane"); // "Hello, Jane"
এখানে, greet ফাংশনটি একটি আর্গুমেন্ট greeting এবং একটি আর্গুমেন্ট name গ্রহণ করে। আমরা _.partial() ব্যবহার করে greeting আর্গুমেন্টটি Hello দিয়ে আংশিকভাবে পূর্ণ করেছি এবং পরে name আর্গুমেন্ট দিয়ে এটি কল করেছি।
_.bind এবং _.partial এর মধ্যে পার্থক্য
_.bind: এটি একটি ফাংশনকে একটি নির্দিষ্টthisকনটেক্সটে বাউন্ড করতে ব্যবহৃত হয় এবং আপনি এটি কল করার সময় আর্গুমেন্ট পাস করতে পারেন। এটি মূলতthisকনটেক্সট নিয়ন্ত্রণ করে।_.partial: এটি একটি ফাংশনকে আংশিকভাবে আর্গুমেন্ট দিয়ে বাউন্ড করে, এবং পরবর্তীতে আপনি বাকি আর্গুমেন্ট পাস করে ফাংশনটি কল করতে পারেন। এটি মূলত আর্গুমেন্ট নিয়ন্ত্রণ করে।
_.bind এবং _.partial এর সমন্বয়ে ব্যবহার
এই দুটি ফাংশন একত্রে ব্যবহার করে আপনি একটি ফাংশনকে নির্দিষ্ট this কনটেক্সটে এবং আর্গুমেন্টের সাথে ফিক্সড করে কল করতে পারেন। এর মাধ্যমে আরও নমনীয় এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা সম্ভব।
উদাহরণ:
let person = {
name: "Alice",
greet: function(greeting, punctuation) {
console.log(greeting + ", " + this.name + punctuation);
}
};
// _.bind দিয়ে this বাউন্ড করা এবং _.partial দিয়ে আর্গুমেন্ট প্রি-ফিল্ড করা
let greetAlice = _.partial(_.bind(person.greet, person), "Hello");
greetAlice("!"); // "Hello, Alice!"
greetAlice("."); // "Hello, Alice."
এখানে, আমরা প্রথমে person.greet ফাংশনটিকে person অবজেক্টের this কনটেক্সটে বাউন্ড করেছি _.bind ব্যবহার করে। তারপর, _.partial দিয়ে greeting আর্গুমেন্টটি Hello দিয়ে পূর্ণ করেছি এবং পরবর্তীতে punctuation আর্গুমেন্টটি পাস করেছি।
সারাংশ
_.bindএবং_.partialহল Underscore.js এর শক্তিশালী ফাংশন, যা JavaScript-এ ফাংশনাল প্রোগ্রামিংয়ের সুবিধা প্রদান করে।_.bindফাংশনটিthisকনটেক্সট বাউন্ড করতে ব্যবহৃত হয়, যখন_.partialফাংশনটি আংশিকভাবে আর্গুমেন্ট পূর্ণ করতে ব্যবহৃত হয়।- একত্রে ব্যবহারের মাধ্যমে, আপনি ফাংশনকে একটি নির্দিষ্ট কনটেক্সটে এবং আর্গুমেন্টের সাথে সহজে কাস্টমাইজ করে কাজ করতে পারবেন।
এই দুটি ফাংশনের মাধ্যমে কোডিং আরও পরিষ্কার, দ্রুত এবং পুনঃব্যবহারযোগ্য হয়ে ওঠে।
Read more