使用物件字面量和建構函式建立的物件之間主要區別是什麼?
使用物件字面量建立的物件是**單例**,這意味著對物件的更改會影響整個指令碼中的物件。而如果使用建構函式建立的物件進行了更改,則該更改不會影響整個指令碼中的物件。
讓我們分別討論它們。
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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP