Tech/Javascript

[Javascript] prototype 프로토 타입

lonnie(동현) 2021. 1. 1. 23:10

1. prototype이 왜 필요할까?

 이 코드에서는 sum이라는 function이 Person 생성자 함수에 의해 객체를 만들 때마다 반복적으로 만들어진다. 이는 컴퓨터의 메모리가 낭비된다. 만약에 이렇게 객체를 생성하는 작업을 수억 번 반복한다면, 시간과 메모리가 소모되기 마련이다. 

 

 이렇게 생성자 안에서 method를 만드는 것은 생산성이 떨어질 수 밖에 없다.

생성자 안에 method 가 있는 case

2. prototype 을 이용해 재사용성 높이기

 프로토 타입은 생성자를 통해서 만든 객체들 모두가 공통적으로 사용하는 속성을 만드는 방법이다. 한번만한 번만 실행이 되기 때문에 성능을 절약할 수 있고, 한 번만 정의되기 때문에 메모리도 절약할 수 있다.

프로토 타입을 만든 case

 그렇다면, 이 sum 이라는 함수의 프로토 타입이 지정되어있는데 내가 원하는 어떤 객체에서 다르게 동작을 하고 싶다면 어떻게 하면될까? sum이라는 함수 속성을 재정의해주면 된다. 상황에 맞게 사용 가능한 method를 만들 수 있기 때문에 유지보수에도 많은 도움이 된다.

 

 자바스크립트는 객체의 method를 호출할 때,  첫 번째로 그 객체 자신이 그 method의 속성을 가지고 있는지를 찾는다. 만약 부합하는게 있다면? 그 속성을 실행시키고, prototype의 속성은 무시하게 된다.  그리고 두 번째로 그 객체의 생성자의 prototype이 가진 method의 속성을 찾게 된다.

dongle 객체만 sum을 다르게 하고 싶은 경우

 이처럼, dongle 객체는 prototype을 따르지 않고 this : 가 같이 출력되는 것을 볼 수 있고, dongri 객체는 prototype을 따르는 것을 볼 수 있다.

  

728x90
반응형

'Tech > Javascript' 카테고리의 다른 글

[Javascript] class 에서 메소드 구현하기  (0) 2021.01.02
[Javascript] class  (0) 2021.01.02
[Javascript] constructor 생성자 함수  (0) 2021.01.01
[Javascript] 객체 지향 - 'this'  (0) 2020.12.31
[Javascript] 객체의 기본  (0) 2020.12.30