使用物件字面量和建構函式建立的物件之間主要區別是什麼?


使用物件字面量建立的物件是**單例**,這意味著對物件的更改會影響整個指令碼中的物件。而如果使用建構函式建立的物件進行了更改,則該更改不會影響整個指令碼中的物件。

讓我們分別討論它們。

1) 使用物件字面量建立的物件

由於這些是**單例**,對物件的更改會持續存在於整個指令碼中。一個例項的更改將影響物件的所有例項。

在下面的示例中,如果我們觀察到,兩個物件“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


2) 使用建構函式建立的物件。

使用**函式構造器**定義的物件允許您擁有該物件的多個例項。這意味著對一個例項的更改不會影響其他例項。

在下面的示例中,即使物件“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

更新於:2019年7月30日

2K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.