অবজেক্ট লিটারেল দিয়ে তৈরি অবজেক্টগুলি সিঙ্গলটন, অর্থাৎ যখন অবজেক্টে কোনো পরিবর্তন করা হয়, তা পুরো স্ক্রিপ্টে সেই অবজেক্টকে প্রভাবিত করে। অন্যদিকে, কনস্ট্রাক্টর ফাংশন দিয়ে অবজেক্ট তৈরি করলে এবং সেটিতে পরিবর্তন করলে, তা স্ক্রিপ্টের অন্যান্য অংশে সেই অবজেক্টকে প্রভাবিত করে না।
নিচে আলাদা আলাদাভাবে এগুলোর কথা বলা হলো।
১) অবজেক্ট লিটারেল দিয়ে তৈরি অবজেক্ট
যেহেতু এগুলো সিঙ্গলটন, তাই একটি অবজেক্টে করা পরিবর্তন পুরো স্ক্রিপ্টে টেকেই থাকে। একটি ইন্সট্যান্সে পরিবর্তন করলে অবজেক্টের সব ইন্সট্যান্সে তা প্রতিফলিত হয়।
নিচের উদাহরণে দেখা যাচ্ছে, "student" এবং "newStudent" উভয় অবজেক্টই প্রথমে একই নাম (Ravi) দেখাচ্ছে। কিন্তু "newStudent" অবজেক্টের নাম পরিবর্তন করলে (অন্যটি অপরিবর্তিত রেখে), উভয় অবজেক্টই পরিবর্তিত নাম (kumar) দেখাতে लगता है।
উদাহরণ
<html> <body> <script> var student = { name: "Ravi" } var newStudent = student; document.write("Before change"); document.write("<br>"); document.write("student name = " + student.name); document.write("<br>"); document.write("new student name = " + newStudent.name); document.write("<br>"); newStudent.name = "kumar"; document.write("After change"); document.write("<br>"); document.write("student name = " + student.name); document.write("<br>"); document.write("new student name = " + newStudent.name); </script> </body> </html>আউটপুট
Before change student name = Ravi new student name = Ravi After change student name = kumar new student name = kumar
২) কনস্ট্রাক্টর ফাংশন দিয়ে তৈরি অবজেক্ট
ফাংশন কনস্ট্রাক্টর দিয়ে ডিফাইন করা অবজেক্টের একাধিক ইন্সট্যান্স থাকতে পারে। এর মানে হলো, একটি ইন্সট্যান্সে করা পরিবর্তন অন্যগুলোকে প্রভাবিত করে না।
নিচের উদাহরণে "newStudent" অবজেক্টের নাম পরিবর্তন হলেও, "student" অবজেক্টের নাম অপরিবর্তিত থাকে। আউটপুটে দুটি অবজেক্টের আলাদা নাম দেখানো হয়েছে।
উদাহরণ
<html> <body> <script> var stu = function() { this.name= "Ravi" } var newStudent = new stu(); var student = new stu(); document.write("Before change"); document.write("<br>"); document.write("student name = " + student.name); document.write("<br>"); document.write("new student name = " + newStudent.name); document.write("<br>"); newStudent.name = "kumar"; document.write("After change"); document.write("<br>"); document.write("student name = " + student.name); document.write("<br>"); document.write("new student name = " + newStudent.name); </script> </body> </html>আউটপুট
Before change student name = Ravi new student name = Ravi After change student name = Ravi new student name = kumar