같은 값을 가지는 객체를 여러개 생성할때 생성자 함수를 만들어서 new로 값을 저장한다.
이때 생성자 함수의 시작은 대문자로 시작한다.
function Info() {
this.age = 20;
this.color = 'red'
}
const info2 = new Info();
const info3 = new Info();
Info라는 생성자 함수의 값을 info2, info3 객체들에게 값을 저장했다.
생성자 함수가 만들어낸 객체를 instance 라고부른다.
생성자를 통해서 만들어진 인스턴스들은 각자 값을 가지고 있다.
위에서 Info의 값이 info2, info3에 저장된것을 확인할 수 있다.
그런데 이렇게 객체들에게 똑같이 값을 주는것은 메모리 낭비다.
prototype
같은 생성자를 통해서 만들어진 인스턴스들이 같은 값을 가지는것이 prototype이다.
중복되는 값은 생성자 함수에 prototype을 이용해서 값을주고
인스턴스는 그 prototype의 값을 상속 받는다
인스턴스.프로토타입값을 출력하면 출력되지만
실제로 그 값은 인스턴스는 가지고 있지 않다.
위에서도 콘솔창을 보면 실제로 info2, info3가 가지고 있는 값은 생성자에서 정의한 값만 있다
값은 부모만 가지고 있다.
instanceof
instanceof를 통해서 앞에 객체가 뒤에 생성자에서 생성된건지 확인할 수 있다.
위에서 info2는 Info를 통해서 생성됐기 때문에
true를 출력한다.
[Javascript] Promise ( then, catch, finally ) (0) |
2022.06.19 |
[Javascript] class를 통한 상속( constructor, extends, super ) (0) |
2022.06.17 |
[Javascript] function 메소드 ( call, apply, bind ) (0) |
2022.06.14 |
[Javascript] window 메소드 ( setTimeout, setInterval, clearInterval, clearTimeout ) (0) |
2022.06.12 |
[Javascript] 이벤트 위임, 이벤트 리스너 (0) |
2022.06.09 |