티스토리 뷰

계속 이고잉님 강의 듣는 중

https://opentutorials.org/module/532/6570

 

생성자와 new - JavaScript

객체 객체란 서로 연관된 변수와 함수를 그룹핑한 그릇이라고 할 수 있다. 객체 내의 변수를 프로퍼티(property) 함수를 메소드(method)라고 부른다. 객체를 만들어보자. var person = {} person.name = 'egoing'

opentutorials.org

 


 

👀 여기 같은 기능을 하는 객체가 반복되고 있다.

const sayHello1 = {
  name : 'Jessie',
  introduce : function() {
    return 'My name is' + this.name;
  }
}

const sayHello2 = {
  name : 'Tony',
  introduce : function() {
    return 'My name is' + this.name;
  }
}

여러 사람의 이름을 값으로 가지고 동일하게 인사말을 return 하는 객체들이 있다.

이것은 코드의 양이 많아지고 유지보수가 어려워지는 구조로

해결을 위해서는 중복을 제거해야하고, 그것을 위해 new 생성자의 사용이 필요하다.

 

 

 

👀 new 로 생성자(constructor) 만들기

function SayHello(name) {
  this.name = name,
  this.introduce = function() {
    return 'My name is ' + this.name; 
  }
}

const person1 = new SayHello('Jessie');
console.log(person1.introduce()); // output : My name is Jessie

const person2 = new SayHello('Tony');
console.log(person2.introduce()); // output : My name is Tony

 

객체가 가지게 될 속성(name)과 메소드(introduce)를 함수에 담아서 생성자 함수를 만들었다.

이로서 공통된 속성과 메소드는 함수에 한번만 쓰이게 되었다.

그리고 함수의 파라미터를 활용해 다른 사람의 이름을 넣어 같은 기능을 하게 만들었다.

 

이렇게 생성자 함수 내에서 만들어질 객체의 속성과 메소드를 셋팅하는 것을 초기화(initialize)라고 한다.

덕분에 코드의 재사용성이 대폭 높아진다.

 

자바스크립트에서 객체 생성의 주체는 '함수'이다.

다른 언어들은 클래스 안에 객체가 속해있고 뭐 그렇다는데.. 잘 모르겠고 일단 자바스크립트는 함수가 중요한 역할을 하는 언어다.

(다른 언어를 배우다가 오면 이 부분이 특이한 지점이라고 한다.)

 

new 없이 함수를 호출하면 그냥 일반 함수를 호출한 것이라 객체를 생성하지 않는다.

new 가 있어야 비로소 객체를 생성한다.

그래서 일반 함수와 생성자 함수는 사용 의도를 표시하기 위해 구분이 필요한데,

생성자 함수의 이름 첫 글자를 대문자로 만드는 것이 관례이다.

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함