Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

อะไรคือความแตกต่างที่สำคัญระหว่างอ็อบเจกต์ที่สร้างโดยใช้อ็อบเจกต์ลิเทอรัลและฟังก์ชันคอนสตรัคเตอร์?


วัตถุที่สร้างขึ้นโดยใช้ตัวอักษรของวัตถุคือ singletons ซึ่งหมายความว่าเมื่อทำการเปลี่ยนแปลงกับอ็อบเจ็กต์ จะมีผลกับอ็อบเจ็กต์ทั้งสคริปต์ แม้ว่าวัตถุจะถูกสร้างขึ้นโดยใช้ฟังก์ชันตัวสร้างและมีการเปลี่ยนแปลง การเปลี่ยนแปลงนั้นจะไม่ส่งผลต่อวัตถุตลอดทั้งสคริปต์

มาคุยกันทีละคน

1) วัตถุที่สร้างขึ้นโดยใช้ตัวอักษรวัตถุ

เนื่องจากสิ่งเหล่านี้คือ ซิงเกิ้ลตัน การเปลี่ยนแปลงวัตถุจะคงอยู่ตลอดสคริปต์ การเปลี่ยนแปลงในอินสแตนซ์เดียวจะส่งผลต่ออินสแตนซ์ทั้งหมดของออบเจ็กต์

ในตัวอย่างต่อไปนี้ หากเราสังเกต วัตถุทั้งสองอย่าง "นักเรียน " และ "newStudent " แสดง ชื่อ(รวี) . เดียวกัน เริ่มแรก แต่เมื่อชื่อวัตถุ "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


2) อ็อบเจ็กต์ที่สร้างโดยใช้ฟังก์ชันคอนสตรัคเตอร์

วัตถุที่กำหนดด้วย f ร่วม unction อาจารย์ l et คุณมีหลายอินสแตนซ์ของวัตถุนั้น หมายถึงการเปลี่ยนแปลงที่เกิดขึ้นกับอินสแตนซ์หนึ่งๆ จะไม่ส่งผลต่ออินสแตนซ์อื่นๆ

ในตัวอย่างต่อไปนี้แม้ว่าชื่อของวัตถุ "newStudent " ได้เปลี่ยน ชื่อของวัตถุอื่น "นักเรียน " ยังคงเหมือนเดิม ออบเจ็กต์ทั้งสองแสดงชื่อต่างกันตามที่แสดงในผลลัพธ์

ตัวอย่าง

<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