使用对象文字创建的对象是单例对象,这意味着当对对象进行更改时,它将影响整个脚本。而如果使用构造函数创建对象并对其进行更改,则该更改不会影响整个脚本中的对象。
让我们单独讨论它们。
由于这些是单例,因此对对象的更改会在整个脚本中持续存在。一个实例中的更改将影响该对象的所有实例。
在下面的示例中,如果我们观察到,则对象“ 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