ECMAScript অবজেক্ট স্কোপ
- পূর্ববর্তী পৃষ্ঠা অবজেক্ট টাইপ
- পরবর্তী পৃষ্ঠা ক্লাস বা অবজেক্ট নির্বাচন
কর্মক্ষেত্র বলতে বলা হয়, বিষয়ের প্রয়োগের পরিসর
পাবলিক, প্রাইভেট এবং প্রতিষ্ঠিত কর্মক্ষেত্র
প্রকৃতি
ক্লাসিক্যাল ওয়ার্পার্ন্ট প্রোগ্রামিংতে, প্রধানত পাবলিক এবং প্রাইভেট কর্মক্ষেত্রের ওপর জোর দেওয়া হয়।পাবলিক কর্মক্ষেত্রের বস্তুর বৈশিষ্ট্যগুলি বস্তুর বাইরে প্রবেশযোগ্য, অর্থাৎ, ডেভেলপারদের কাছে বস্তুর প্রতিদর্শ তৈরির পর, তার পাবলিক বৈশিষ্ট্যগুলি ব্যবহার করা যায়।প্রাইভেট কর্মক্ষেত্রের বৈশিষ্ট্যগুলি কেবল বস্তুর ভিতরেই প্রবেশযোগ্য, অর্থাৎ, বাইরের বিশ্বের জন্য এই বৈশিষ্ট্যগুলি নেই।আর্থাৎ, যদি কোনও ক্লাস প্রাইভেট বৈশিষ্ট্য এবং পদ্ধতি নির্মাণ করে, তবে তার সাব-ক্লাসও এই বৈশিষ্ট্য এবং পদ্ধতিকে প্রবেশ করতে পারবে না。
প্রতিষ্ঠিত কর্মক্ষেত্রটিও প্রাইভেট বৈশিষ্ট্য এবং পদ্ধতির নির্মাণের জন্য ব্যবহৃত হয়, কিন্তু এই বৈশিষ্ট্য এবং পদ্ধতিকে তাদের সাব-শ্রেণীও প্রবেশ করতে পারে।
ECMAScript-একমাত্র পাবলিক কর্মক্ষেত্র
ECMAScript-এর উপর এই কর্মক্ষেত্র নিয়ের আলোচনা খুবই কম মূল্যবান, কারণ ECMAScript-একমাত্র একটি কর্মক্ষেত্র রয়েছে - পাবলিক কর্মক্ষেত্র।ECMAScript-এর সমস্ত বস্তুর সমস্ত বৈশিষ্ট্য এবং পদ্ধতি পাবলিক।তাই, নিজস্ব শ্রেণী এবং বস্তু নির্মাণের সময়, অত্যন্ত সতর্কতার সাথে কাজ করতে হবে।মনে রাখুন, সব বৈশিষ্ট্য এবং পদ্ধতি ডিফল্টভাবে পাবলিক!
প্রস্তাবিত সমাধান
বহু ডেভেলপার ইন্টারনেটে বিশেষ প্রভাবশালী বৈশিষ্ট্য কর্মক্ষেত্র মডেল উপস্থাপন করেছেন, যা ECMAScript-এর এই সমস্যা সমাধান করেছে।
প্রাইভেট কর্মক্ষেত্র না থাকায়, ডেভেলপারদের একটি নিয়ম নিশ্চিত করেছেন, যা বলে, কোনও বৈশিষ্ট্য এবং পদ্ধতিকে প্রাইভেট হিসাবে মনে করা হবে।এই নিয়ম বৈশিষ্ট্যগুলির সামনে এবং পরে হাইফেন যোগ করে নির্দেশ দেয়:
obj._color_ = "blue";
এই কোডে, বৈশিষ্ট্য color প্রাইভেট।পরিমাপ, হাইফেন বৈশিষ্ট্যটিকে পাবলিক হিসাবে মনে করার কথা না পরিবর্তন করে, এটা আরও বৈশিষ্ট্যটিকে প্রাইভেট হিসাবে দেখানোর জন্য অন্যান্য ডেভেলপারদের জানায়।
কিছু উন্নয়নকারীরা প্রায়শই একক নিশ্চনক ব্যবহার করে প্রাইভেট সদস্যকে চিহ্নিত করে, যেমন: obj._color।
স্ট্যাটিক কাজ
স্ট্যাটিক কাজের অভিব্যক্তির মাধ্যমে বিবর্তিত প্রকৃতি ও পদ্ধতি কোনও সময়ই একই স্থান থেকে পুনরায় ব্যবহার করা যায়। Java-এ, ক্লাসটির একটি প্রকৃতি ও পদ্ধতি থাকতে পারে, যা ক্লাসের উপাদান হিসেবে নয়, কিন্তু ক্লাসের উপাদান হিসেবে ব্যবহার করা যায়, যেমন java.net.URLEncoder ক্লাস, যার encode() ফাংশনটি একটি স্ট্যাটিক ফাংশন।
ECMAScript-এর স্ট্যাটিক কাজ নেই
সুতরাং, ECMAScript-এর স্ট্যাটিক কাজের কোনও প্রকৃত কাজ নেই। কিন্তু, তা নিজের কাজের সময়, নিজের কাজের নিজের প্রকৃত নামটি প্রদান করতে পারে। ক্ষণীক্ষণ মনে করুন, নিজের কাজের সময়, নিজের কাজের নিজের প্রকৃত নামটি প্রদান করতে পারে:
function sayHello() { alert("hello"); } sayHello.alternate = function() { alert("hi"); } sayHello(); //আউটপুট "hello" sayHello.alternate(); //আউটপুট "hi"
এখানে, alternate() মেথডটি নিজেরই sayHello() ফাংশনের মেথড। sayHello() ফাংশনটিকে সাধারণ ফাংশন হিসেবে ব্যবহার করলে, sayHello() ফাংশনটি 'hello' আউটপুট করে, কিন্তু sayHello.alternate() ফাংশনটিকে ব্যবহার করলে, 'hi' আউটপুট করে। যদিও, alternate() ফাংশনটি sayHello() ফাংশনটির সাধারণ কাজের সময় ব্যবহৃত হয়, তবুও, alternate() ফাংশনটি সাধারণ কাজের সময় ব্যবহৃত হয়, না স্ট্যাটিক ফাংশন।
'this' শব্দটি
'this' এর কাজ
ECMAScript-এ, যেকোনও সবচেয়ে মূল্যবান অভিব্যক্তির একটি হল 'this' শব্দটির ব্যবহার, যা নিজের কাজের মেথডে ব্যবহৃত হয়। 'this' শব্দটি সর্বদা সেই মেথডকে বানানো বা ব্যবহার করা হওয়া নিজের কাজের দিকে সুইচ করে, যেমন:
var oCar = new Object; oCar.color = "red"; oCar.showColor = function() { alert(this.color); }; oCar.showColor(); //আউটপুট "red"
এই কোডে, 'this' শব্দটি নিজের কাজের showColor() মেথডে ব্যবহৃত হয়। এই পরিবেশে, 'this' = oCar। নিচের কোডটি উপরের কোডের সমস্ত কাজ করে:
var oCar = new Object; oCar.color = "red"; oCar.showColor = function() { alert(oCar.color); }; oCar.showColor(); //আউটপুট "red"
'this' ব্যবহারের কারণ
কেন 'this' ব্যবহার করা হয়? কারণ, নিজের কাজের সময়, উন্নয়নকারীরা কোনও বিন্যাসকৃত নাম কীভাবে ব্যবহার করবেন, তা নিশ্চিত করা যায় না। 'this' ব্যবহার করে, কোনও একই ফাংশনটিকে অনেক জায়গায় পুনরায় ব্যবহার করা যায়। নিচের উদাহরণটি চিন্তা করুন:
function showColor() { alert(this.color); }; var oCar1 = new Object; oCar1.color = "red"; oCar1.showColor = showColor; var oCar2 = new Object; oCar2.color = "blue"; oCar2.showColor = showColor; oCar1.showColor(); //ফলাফল "red" oCar2.showColor(); //ফলাফল "blue"
এই কোডে, প্রথমে this দ্বারা showColor() ফাংশন নির্বাচন করা হয়, এবং দুটি অবজেক্ট (oCar1 এবং oCar2) তৈরি করা হয়, একটি অবজেক্টের color প্রকারটি "red" এবং আরেকটি অবজেক্টের color প্রকারটি "blue" হয়। দুটি অবজেক্টকেও showColor প্রকারগুলি দেওয়া হয়, যা প্রথমটি হলো শুধুমাত্র গ্লোবাল ফাংশন, এবং দ্বিতীয়টি হলো অবজেক্টের প্রকারগুলি। oCar1.showColor() এর ক্ষেত্রে, ফাংশনের মধ্যে this কীওয়ার্ড সমান oCar1। oCar2.showColor() এর ক্ষেত্রে, ফাংশনের মধ্যে this কীওয়ার্ড সমান oCar2।
মনে রাখুন, অবজেক্টের প্রকারগুলির সূচক উল্লেখ করার জন্য, this কীওয়ার্ড ব্যবহার করতে হবে। উদাহরণস্বরূপ, নিচের কোডটি দিয়ে showColor() মথুল চালানো যাবে না:
function showColor() { alert(color); };
যদি অবজেক্ট বা this কীওয়ার্ড দ্বারা ভাল্লোবাসা করা না হয়, ECMAScript তা স্থানীয় বা সার্বজনীন ভাল্লোবাসা হিসাবে দেখবে। এরপর এই ফাংশন কালার নামভুক্ত স্থানীয় বা সার্বজনীণ ভাল্লোবাসা অনুসন্ধান করবে, কিন্তু খুঁজে পাবে না। ফলাফল কী হবে? ফাংশন নোটিশ তে "null" দেখাবে。
- পূর্ববর্তী পৃষ্ঠা অবজেক্ট টাইপ
- পরবর্তী পৃষ্ঠা ক্লাস বা অবজেক্ট নির্বাচন