使用对象文字和构造函数创建的对象之间的主要区别是什么?
javascriptobject oriented programmingprogramming更新于 2024/7/26 0:01:00
使用对象文字创建的对象是单例,这意味着当对对象进行更改时,它会影响整个脚本的对象。而如果使用构造函数创建对象并对其进行更改,则该更改不会影响整个脚本中的对象。
让我们分别讨论它们。
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) 使用构造函数创建的对象。
使用 f函数构造函数 定义的对象使您拥有该对象的多个实例。这意味着对一个实例所做的更改不会影响其他实例。
在下面的例子中,即使对象"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