-
new 연산자와 생성자 함수개발 지식/자바스크립트 2022. 7. 25. 09:39
다음 내용은 모던 자바스크립트(https://ko.javascript.info)를 참고로 하였다.
생성자 함수(constructor function)와 일반 함수에 기술적인 차이는 없다. 다만 생성자 함수는 아래 두 관례를 따른다.
- 함수 이름의 첫 글자는 대문자로 시작합니다.
- 반드시 'new' 연산자를 붙여 실행합니다.
function User(name) { this.name = name; this.isAdmin = false; } let user = new User("보라");
new User(...)를 써서 함수를 실행하면 아래와 같은 알고리즘이 동작합니다.
- 빈 객체를 만들어 this에 할당합니다.
- 함수 본문을 실행합니다. this에 새로운 프로퍼티를 추가해 this를 수정합니다.
- this를 반환합니다.
function User(name) { // this = {}; (빈 객체가 암시적으로 만들어짐) // 새로운 프로퍼티를 this에 추가함 this.name = name; this.isAdmin = false; // return this; (this가 암시적으로 반환됨) }
모든 함수는 생성자 함수가 될 수 있다는 점을 잊지 말아야 한다. new를 붙여 실행한다면 어떤 함수라도 위에 언급된 알고리즘이 실행된다. 이름의 '첫 글자가 대문자’인 함수는 new를 붙여 실행해야 한다는 점도 잊지 말자. 공동의 약속이다.
생성자 내 메서드
생성자 함수 내부에 프로퍼티만 아니만 메서드 또한 추가될 수 있다.
function User(name) { this.name = name; this.sayHi = function() { alert( "제 이름은 " + this.name + "입니다." ); }; } let bora = new User("이보라"); bora.sayHi(); // 제 이름은 이보라입니다.
- 생성자 함수(짧게 줄여서 생성자)는 일반 함수이다. 다만, 일반 함수와 구분하기 위해 함수 이름 첫 글자를 대문자로 쓴다.
- 생성자 함수는 반드시 new 연산자와 함께 호출해야 한다. new와 함께 호출하면 내부에서 this가 암시적으로 만들어지고, 마지막엔 this가 반환된다.
댓글