객체

  • object를 의미함
  • key와 value로 이루어져있음(배열과 유사)
// 객체 생성
var student = {
             id: 100,
             name: '홍길동',
             grade: '90'
};
// 객체가 가진 id값 확인
console.log(student.id);
  • 객체는 동적으로 속성 추가와 제거 가능
  • 변수, 함수를 선언하고 값을 넣어주면 된다
// 객체 생성
var student = {
             id: 100,
             name: '홍길동',
             grade: '90'
             
};
student.age = 16;
student.getAge = function(){
       return this.age;
}
console.log(student);
console.log(student.getAge());

객체의 복사

  • 객체1=객체2 처럼 객체2가 가진 주소를 객체 1도 가리키게 되었을 때 얕은복사를 했다고 말함(값이 아닌 주소값 복제)
  • 깊은 복사는 객체1, 객체2가 가진 주소가 별개여야 함(옳은방향)
  • for문, 펼침연산 등으로 깊은 복사를 할 수 있다

prototype

  • 생성자 함수로 생성된 객체가 공통으로 가지는 공간
  • 예를들어 Student란 객체가 3개의 속성과 1개의 함수를 가지고 있다
  • Student 객체가 1000개 만들어진다면 1개의 함수를 1000개 만들게 된다
  • 메모리낭비가 심하므로 prototype으로 1개의 함수만 만들고 모든 객체가 참고하게 할 수 있다
Student.prototype.getSum = function(){};
Student.prototype.getAverage = function(){};
Student.prototype.toString = function(){};

생성자

  • new functionname(인자)
  • new를 사용하여 생성자를 만들 수 있다
  • 생성자 함수를 사용하면 프로토타입을 사용할 수 있어서 메모리공간을 아낄 수 있다
  • new를 생성하지 않으면 그냥 함수이다. 이 때 함수 내부에서 this 사용 시 Window 객체를 의미하는 것이다
function Student(name,korean,math,english){
    this.name = name;
    this.korean = korean;
    this.math = math;
    this.english = english;
}
var std = new Student('하나나',90,80,10);