Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

객체 리터럴과 생성자 함수를 사용하여 생성된 객체의 주요 차이점은 무엇입니까?

<시간/>

객체 리터럴을 사용하여 생성된 객체는 싱글톤입니다. , 이는 개체가 변경될 때 스크립트 전체에 영향을 미친다는 것을 의미합니다. 반면에 생성자 함수를 사용하여 개체를 만들고 변경한 경우 해당 변경 사항은 스크립트 전체에서 개체에 영향을 미치지 않습니다.

개별적으로 논의합시다.

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로 정의된 개체 기능 공동 강사 l 해당 개체의 여러 인스턴스가 있습니다. 이는 한 인스턴스에 대한 변경이 다른 인스턴스에 영향을 미치지 않음을 의미합니다.

다음 예에서는 "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