1.
객체 생성시, 아래와 같이 생성 할 수 있다.
2.
그런데, 객체를 여러개 생성 해야 할 때,
위와 같이 코드를 작성 하면, 불리 하다.
그래서, 생성자를 작성 해서, 객체를 생성 할 수 있다.
3.
생성자 함수명은 관례적으로 대문자로 시작 하는것으로 작성 한다.
함수명 앞에 new 키워드를 붙히면,
즉, new 함수명(); 을 작성 하면,
아래와 같은 알고리즘으로 동작 하게 된다.
6번째 라인과 같이, 빈 객체를 생성 하고, this에 할당 한다.
그 다음에,
this에 프로퍼티들을 추가 한다.
실제로 this = {} 코드는 작성된 코드가 아니지만, 저렇게 동작 한다는 것이다.
일일히 객체에 리터럴을 작성 하지 않고,
훨씬 빠르고 일관성 있게 객체를 생성 할 수 있게 된다.
4.
예시 01)
위와 같이, 생성자 내부에 무명 함수를 작성 할 수도 있다.
sayName 이라는 프로퍼티가 있다.
프로퍼티의 값으로 무명 (익명) 함수를 작성 했고,
해당 함수는 이름을 콘솔창에 띄우는 기능을 하는 함수 이다.
5.
예시 02)
[ 참고 ]
item3.showPrice() 라고 해야지, 함수 내부의 코드가 실행 되어,
결과를 출력 할 수 있다.
item3.showPrice 라고, 괄호 없이 작성 하면,
함수를 참조 하기만 하고 실행 되지는 않는다.
sayName도 마찬 가지이다.
[ 결론 ]
함수가 위와 같이 할당 되었으면,
해당 프로퍼티를 호출 하기 위해서, 프로퍼티명 + () 해서,
프로퍼티() 로 작성 해줘야 한다.
함수를 가리키는게 아니라, 함수를 실행 하기 위함 이다.
'자바스크립트 (JavaScript) > 이론' 카테고리의 다른 글
[ JS 데이터 ] 참조형 - Array (0) | 2023.10.30 |
---|---|
[ JS 데이터 ] 원시형 - Boolean, null, undefined (0) | 2023.10.30 |
[ JS 데이터 ] 원시형 - String, Number (1) | 2023.10.29 |
변수, 호이스팅, TDZ (Temporal Dead Zone) 요약 (0) | 2023.08.20 |
변수, 호이스팅, TDZ (Temporal Dead Zone) 개념 (0) | 2023.08.20 |