জাভাস্ক্রিপ্ট ফাংশনকে ৪ ভাবে কল(invoke) করা যায়।
প্রত্যেকটি মেথড this এর ইনিশিয়ালাইজেশনের ভিন্নতার কারণে পৃথক।
জাভাস্ক্রিপ্টে this কি-ওয়ার্ডটি ঐ অবজেক্টকে বুঝাবে, যে অবজেক্টের কোডের মধ্যে ইহা থাকবে।
যদি আমি একটি ফাংশনের মধ্যে this ব্যবহার করি, তাহলে ফাংশনটি যে অবজেক্টের মধ্যে রয়েছে this কি-ওয়ার্ডটি ঐ অবজেক্টকে বুঝায়।
আমরা জানি যে,জাভাস্ক্রিপ্ট ফাংশনকে এক্সিকিউট করার জন্য একে ইনভোক/কল করতে হয়।
kt_satt_skill_example_id=1201
উপরের ফাংশনটি কোনো অবজেক্টের অধীনে নয়। কিন্তু জাভাস্ক্রিপ্টে সবসময় একটি ডিফল্ট গ্লোবাল অবজেক্ট থাকে।
এইচটিএমএল-এ এইচটিএমল পেজ হলো ডিফল্ট গ্লোবাল অবজেক্ট, উপরের ফাংশনটি এইচটিএমল পেজের অধীনে রয়েছে।
ব্রাউজারে ব্রাউজার উইন্ডো হলো পেজের অবজেক্ট। এক্ষেত্রে ফাংশনটি স্বয়ংক্রিয়ভাবে উইন্ডোর ফাংশনে রূপান্তরিত হয়।
myFunction() এবং window.myFunction() একইঃ
kt_satt_skill_example_id=1203
ইহা জাভাস্ক্রিপ্ট ফাংশনকে কল করার একটি সাধারণ পন্থা, কিন্তু আমরা এমনটা অনুশীলন করবো না।
গ্লোবাল ভ্যারিয়েবল, মেথড অথবা ফাংশন ব্যবহার থেকে আমরা বিরত থাকবো।
ফাংশন কল করার সময় ইহা কোন অবজেক্টের অধীনস্থ উল্লেখ না থাকলে this এর ভ্যালু গ্লোবাল অবজেক্ট হয়ে যায়।
ওয়েব ব্রাউজারে গ্লোবাল অবজেক্ট হলো ব্রাউজার উইন্ডো।
kt_satt_skill_example_id=1204
জাভাস্ক্রিপ্টে আপনি ফাংশনকে অবজেক্টের মেথড হিসেবে ডিফাইন করতে পারেনঃ
kt_satt_skill_example_id=1205
fullName মেথডটি myObject অবজেক্টের মধ্যে বিদ্যমান একটি ফাংশন।
এখানে this দ্বারা myObject কে বুঝানো হয়েছে।
অবজেক্ট মেথড এর thisমানটি ,অবজেক্ট এর মালিক।
[object Object]
অবজেক্ট মেথড হিসেবে একটি ফাংশনকে কল করার কারণে this এর ভ্যালু এখানে অবজেক্ট দেখায়।
যদি new কি-ওয়ার্ড দ্বারা ফাংশনকে কল করা হয় তাহলে একে কনস্ট্রাক্টর ইনভোক করা বুঝায়।
kt_satt_skill_example_id=1207
একটি কনস্ট্রাক্টরকে ইনভোক করলে সেটি নতুন অবজেক্ট তৈরি করে। নতুন অবজেক্টটি তার কনস্ট্রাক্টর থেকে প্রোপার্টি ও মেথড ইনহেরিট করে।
কনস্ট্রাক্টরের this কি-ওয়ার্ডের কোনো ভ্যালু নেই।
যখন কনস্ট্রাক্টরকে ইনভোক করা হয় নতুন অবজেক্টটি this-এর ভ্যালু হবে।
জাভাস্ক্রিপ্টে ফাংশন হলো অবজেক্ট। জাভাস্ক্রিপ্ট ফাংশনের প্রোপার্টি ও মেথড থাকে।
call() এবং apply() জাভাস্ক্রিপ্ট ফাংশনের দুইটি প্রিডিফাইনড মেথড। মেথড দুইটিই ফাংশন ইনভোক করার জন্য ব্যবহার করা যায় এবং উভয় মেথডেরই প্রথম প্যারামিটার হিসেবে একটি অবজেক্ট থাকে।
kt_satt_skill_example_id=1208
kt_satt_skill_example_id=1209
উভয়ই মেথডই প্রথম আর্গুমেন্ট হিসেবে একটি অবজেক্ট গ্রহন করে। পার্থক্য শুধুমাত্র call() ফাংশন আর্গুমেন্টগুলো আলাদাভাবে গ্রহন করে এবং apply() ফাংশনের আর্গুমেন্টগুলো অ্যারে আকারে আকারে করে।
জাভাস্ক্রিপ্ট স্ট্রিক্ট মুডে(use strict) ফাংশন ইনভোকের সময় প্রথম আর্গুমেন্টটি this এর ভ্যালু হয়ে যায়, যদিও আর্গুমেন্টটি অবজেক্ট নয়। স্ট্রিক মুডে প্রথম আর্গুমেন্ট না দেওয়া হলে এঁরর দেখাবে। নন-স্ট্রিক্ট মুডে গ্লোবাল অবজেক্ট রুপান্তরিত হবে।
আরও দেখুন...