কম্পিউটার

জাভাস্ক্রিপ্টে নেমস্পেস দূষণ কীভাবে এড়ানো যায়?


নেমস্পেস দূষণ এড়ানো

জাভাস্ক্রিপ্ট ফাংশন ওভারলোডিং সমর্থন করে না . সুতরাং যখন একই নামের যেকোন দুটি ফাংশন ব্যবহার করা হয়, তখন একটি ফাংশন অন্য ফাংশনকে ওভাররাইড করবে এই ফাংশনগুলি লোড হচ্ছে তার উপর নির্ভর করে। এর মানে জাভাস্ক্রিপ্টে নেমস্পেসের অভাব রয়েছে (নামকরণ প্রথা)। যাইহোক, আমরা বস্তু ব্যবহার করতে পারি নামস্থান তৈরি করতে যাতে আমরা নামের সংঘর্ষ এড়াতে পারি

var Tutorix = Tutorix || {};

কোডের উপরের লাইনটি বলে যে যদি Tutorix অবজেক্ট ইতিমধ্যে উপস্থিত আছে তারপর এটি ব্যবহার করুন, অন্যথায় একটি নতুন অবজেক্ট তৈরি করুন৷

আমরা নেস্টেড নেমস্পেসও তৈরি করতে পারি যা অন্য নামস্থানের মধ্যে একটি নামস্থান।

var Tutorix = Tutorix || {};
Tutorix.TeamA1 = Tutorix.TeamA1 || {};

কোডের উপরের লাইনে দ্বিতীয় লাইনটি প্রস্তাব করে যে যদি TeamA1 ইতিমধ্যেই সেই বস্তুটি ব্যবহার করুন, অন্যথায় একটি খালি TeamA1 তৈরি করুন৷ বস্তু।

নিম্নলিখিত উদাহরণে যদিও আমরা HTML ফাইলে শুধুমাত্র 2 প্যারামিটার পাস করছি আমরা আউটপুটে 3 প্যারামিটার পাচ্ছি। এটি নামস্থান সংঘর্ষের কারণে যেটি Team1 এবং Team2 এর মধ্যে ঘটে (উভয়ই একই ফাংশনের নাম "ছাত্র ভাগ করছে৷ ")।

TeamA1.js

<html>
<body>
<script>
   function student(Fname,Lname){
      this.Fname = Fname;
      this.Lname = Lname;
      This.getFullName = function(){
         return this.Fname + " " + this.Lname;
      }
   }
</script>
</body>
</html>

TeamA2.js

<html>
<body>
<script>
   function student(Fname, Mname, Lname){
   this.Fname = Fname;
   this.Mname = Mname;
   this.Lname = Lname;
   This.getFullName = function(){
      return this.Fname + " " + this.Mname + " " + this.Lname;
   }
   }
</script>
</body>
</html>

HTML ফাইল

<html>
<head>
<script type = "javascript" src = "TeamA1.js"></script>
<script type = "javascript" src = "TeamA2.js"></script>
</head>
<body>
<div id = "resultDiv"></div>
<script>
   document.getElementById("resultDiv").innerHTML =
   new student("Rajendra", "prasad").getFullName();
</script>
</body>
</html>

আউটপুট

Rajendra prasad undefined.


যেহেতু নামস্থান সংঘর্ষ TeamA1.js এর মধ্যে ঘটে এবং TeamA2.js , যদিও আমরা TeamA1.js অ্যাক্সেস করার জন্য শুধুমাত্র 2টি প্যারামিটার "রাজেন্দ্র" এবং "প্রসাদ" পাঠিয়েছি, আমরা আউটপুটে 3টি প্যারামিটার "রাজেন্দ্র প্রসাদ অনির্ধারিত" পেয়েছি। কারণ TeamA2.js যেটিতে 3টি প্যারামিটার আছে TeamA1.jsকে ওভাররাইড করেছে৷ .

তাই এই ধরনের নামের সংঘর্ষ এড়াতে আমাদের অবজেক্ট ব্যবহার করে নামের স্পেস তৈরি করতে হবে।

TeamA1.js

নিম্নলিখিত কোড নামস্থানে TeamA1 Tutorix নামে আরেকটি বস্তু ব্যবহার করে তৈরি করা হয় .

<html>
<body>
<script>
   var Tutorix = Tutorix || {};
   Tutorix.TeamA1 = Tutorix.TeamA1 || {};
   Tutorix.TeamA1.student = function (Fname, Lname){
      this.Fname = Fname;
      this.Lname = Lname;
      this.getFullName = function(){
         return this.Fname + " " + this.Lname;
      }
      return this;
   }
</script>
</body>
</html>

TeamA2.js

নিম্নলিখিত কোড নামস্থানে TeamA2 Tutorix নামে আরেকটি বস্তু ব্যবহার করে তৈরি করা হয় .

<html>
<body>
<script>
   var Tutorix = Tutorix || {};
   Tutorix.TeamA2 = Tutorix.TeamA2 || {};
   Tutorix.TeamA2.student = function (Fname, Mname, Lname){
      this.Fname = Fname;
      this.Mname = Mname;
      this.Lname = Lname;
      this.getFullName = function(){
         return this.Fname + " " + this.Mname + " " + this.Lname;
      }
      return this;
   }
</script>
</body>
</html>

HTML ফাইল

HTML ফাইলে উভয় js ফাইল (TeamA1.js এবং TeamA2.js) অন্তর্ভুক্ত করুন।

<html>
<head>
<script type = "javascript" src = "TeamA1.js"></script>
<script type = "javascript" src = "TeamA2.js"></script>
</head>
<body>
<script>
   document.write(window.Tutorix.TeamA1.student("Rajendra", "prasad").getFullName());
   document.write(window.Tutorix.TeamA2.student("Babu","Rajendra","prasad").getFullName());
</script>
</body>
</html>

আউটপুট

Rajendra prasad
Babu Rajendra prasad

উপরের উদাহরণে, আমরা নেস্টেড নেমস্পেস ব্যবহার করেছি যেটা Tutorix -এ আছে নামস্থান আমরা TeamA1 নেস্ট করেছি এবং TeamA2 নামের সংঘর্ষ এড়াতে . যেহেতু নেমস্পেস সংঘর্ষ এড়ানো হয়েছে, তাই আমরা প্রতিটি পৃথক স্ক্রিপ্টের জন্য আউটপুট পেয়েছি।


  1. অপেরায় জাভাস্ক্রিপ্ট কিভাবে সক্রিয় করবেন?

  2. কিভাবে জাভাস্ক্রিপ্ট পদ্ধতি ধার?

  3. কিভাবে জাভাস্ক্রিপ্ট অ্যারে কমাতে?

  4. জাভাস্ক্রিপ্ট সহ একটি টেবিলে NULL মান সন্নিবেশ করা এড়াতে কিভাবে?