생성자 함수(prototype)
- fisrtName, lastName : 속성
- getFullName : 메소드(속성에 함수 데이터가 할당되어 있으면 메소드라 부름)
- 속성과 메소드를 통틀어서 멤버(Member)라고도 부름
- this: this가 소속되어져 있는 함수가 실행되는 객체데이터를 지칭
- 항상 변수의 이름이 바뀔 수 있음을 염두하여 객체의 이름을 직접적으로 명시하는 것 보다는 this를 이용하여 객체데이터를 지칭하는 것을 권장
const hyerin = {
firstName: 'hyerin',
lastName: 'jeon',
getFullName: function () {
return ${this.firstName} ${this.lastName}
}
// return ${this.firstName} ${this.lastName}
= return ${hyerin.firstName} ${hyerin.lastName}
- getFullName은 로직이 동일하므로 통일화해서 메모리를 좀 더 효율적으로 관리 하는 것이 좋음
- User라는 함수에 숨어져 있는 prototype 속성 부분에 getFullName을 할당하여 메모리에 한번만 만들어서 참조하는 방식으로 사용
- this라는 것은 생성자 함수를 통해서 그것이 할당 되어져있는 앞에 있는 객체 부분의 그 내용을 지칭
function User(first, last) {
this.firstName = first
this.lastName = last
}
User.prototype.getFullName = function () {
return ${this.firstName} ${this.lastName}
}
const hyerin = new User('hyerin', 'jeon') // this = hyerin
const amy = new User('amy', 'clarke') // this = amy
console.log(hyerin.getFullName())
console.log(amy.getFullName())
- new 라는 키워드를 통해 User라는 생성자 함수 실행
- 생성자함수 : 무언가를 생성 한다는 의미 즉, 하나의 객체데이터를 생성
- new 라는 키워드로 함수를 생성하는 생성자함수와 일반함수를 구분하기 위해 암묵적으로 PascalCase로 작성함
인스턴스
- new 라는 키워드를 통해 생성자 함수로 실행한 결과를 반환해서 할당된 변수를 생성자 함수의 인스턴스라고 부름
- const hyerin, const amy = 인스턴스
PascalCase
- camelCase와 기본적으로 동일하나 첫번째 단어도 대문자로 표기한다는 점에서 차이점이 있음
- 예시) camelCase: theFox , PascalCase: TheFox
리터럴 방식
- 특정기호만 가지고 데이터를 만들어 내는 것을 리터럴 방식이라고함
- "A"와 같이 따옴표라는 기호를 통해서 문자데이터를 만들어내는 리터럴방식
- 중괄호{} 기호를 이용해 객체데이터를, 대괄호[]를 이용해서 배열데이터를 만들어내는 리터럴방식