티스토리 뷰
계속 이고잉님 강의 듣는 중
https://opentutorials.org/module/532/6570
👀 여기 같은 기능을 하는 객체가 반복되고 있다.
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 가 있어야 비로소 객체를 생성한다.
그래서 일반 함수와 생성자 함수는 사용 의도를 표시하기 위해 구분이 필요한데,
생성자 함수의 이름 첫 글자를 대문자로 만드는 것이 관례이다.
'Javascript' 카테고리의 다른 글
[JS] hoisting과 TDZ(Temporal Dead Zone) (0) | 2022.01.11 |
---|---|
[JS] 문맥에 따라 다른 값을 가지는 this (0) | 2022.01.09 |
[JS] 객체지향 프로그래밍 이해하기 (0) | 2022.01.08 |
[JS] Array 관련 method 정리 - sort(), reduce(), map(), filter() (0) | 2021.12.28 |
[JS] 탭메뉴를 만드는 두 가지 방법 (반복문, 이벤트 버블링) (0) | 2021.12.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- class
- 구조분해할당
- DOM
- Prototype
- scrollEvent
- JQuery
- destructuring
- 생각정리
- Prettier
- JSX
- Ternary
- 리액트
- notworking
- 다중조건삼항연산자
- 타입스크립트
- promise
- JS
- Synchronous
- CSS
- 삼항조건연산자중복사용
- 개념정리
- 조건부삼항연산자
- Callback
- Asynchronous
- Til
- javascript
- typescript
- VSCode
- ES6
- callsignature
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함