使用对象字面量和构造函数创建的对象之间主要区别是什么?
使用对象字面量创建的对象是**单例**,这意味着对对象的更改会影响整个脚本中的对象。而如果使用构造函数创建的对象进行了更改,则该更改不会影响整个脚本中的对象。
让我们分别讨论它们。
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