[JavaScript] 생성자 함수와 new 연산자 그리고 인스턴스(instance)

생성자 함수와 new 연산자

생성자 함수란 동일한 종류의 자동차를 지속적으로 찍어낼 수 있는 자동차 공자의 설비라인과 같다.

생성자 함수를 사용하는 이유는 재사용성을 높이기 위해서이다.

일단 생성자 함수를 사용하려면 두가지 규칙을 지켜야 한다.

1. 함수명의 첫번째 글자는 무조건 대문자여야 한다.
2. 반드시 "new" 연산자 키워드를 붙여야 한다.


function Person(name, firstScore, secondScore, thirdScore) {
this.name = name;
this.firstScore = firstScore;
this.secondScore = secondScore;
this.thirdScore = thirdScore;
this.sum = function () {
return this.firstScore + this.secondScore + this.thirdScore;
};
}

let kim = new Person("kim", 10, 20, 30);
let lee = new Person("lee", 10, 10, 10);


console.log(kim);
/*
Person {
name: 'kim',
firstScore: 10,
secondScore: 20,
thirdScore: 30,
sum: [Function]
}
*/
console.log(lee);
/*
Person {
name: 'lee',
firstScore: 10,
secondScore: 10,
thirdScore: 10,
sum: [Function]
}
*/

console.log(kim.sum()); //60
console.log(lee.sum()); //30

new Person과 같이 작성하면 kim 또는 lee라는 명칭을가진 빈 객체를 만들고 parameter로 넘어온 값을 통해 새로운 객체를 만들어낸다.


생성자 함수를 통해 만들어진 객체 안에선의 this는 자신을 생성한 객체를 가리키는데 위 예제에서의 this는 kim 또는 lee를 가리킨다.


위 예시에서 /* ... */ 주석처리 한부분처럼 값이 반환된다.

생성자 함수에서는 return이 없어도 값이 반환된다.



인스턴스(instance)란 무엇인가?


클래스, 프로토타입, 생성자 함수 등을 통해 생성된 객체를 인스턴스(instance)라고 한다.


댓글