일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Data Structure
- Algorithm
- vscode
- VIM
- BFS
- java
- frontend
- 다이나믹 프로그래밍
- 자바
- LeetCode
- Redux
- git
- DP
- TypeScript
- network
- Graph
- Python
- 알고리즘
- 동적 계획법
- CS
- db
- 그레이들
- react
- 안드로이드
- 프로그래머스
- Javascript
- 백준
- Database
- DFS
- 리트코드
Archives
- Today
- Total
늘 겸손하게
JavaScript - 프로토타입 메서드, 정적 메서드 본문
자바스크립트 클래스의 매서드 작성법은 2가지가 있다.
첫 번째는 '프로토타입 메서드', 두 번째는 '정적 메서드' 이다.
class Person {
constructor(name) {
this.name = name; // name 프로퍼티는 public하다
}
// 프로토타입 메서드
sayHi() {
console.log(`Hi! My name is ${this.name}`);
}
// 정적 메서드
static sayHello() {
console.log("Hello!");
}
}
// 인스턴스 생성
const me = new Person('Lee');
// 인스턴스의 프로퍼티 참조
console.log(me.name); // Lee
// 프로토타입 메서드 호출
me.sayHi(); // Hi! My name is Lee
// 정적 메서드 호출
Person.sayHello(); // Hello!
정적 메소드 v.s 프로토타입 메소드
호출 방식 차이
정적 메소드는 클래스로 호출하고, 프로토타입은 인스턴스를 만들어 호출해야 한다.
class Character {
constructor(name) {
this.name = name;
this.level = 1;
this.job = 'citizen'
}
introduce() {
return `Hello my name is ${this.name}. My job is ${this.job}`;
}
static complain() {
return `This character level is low`;
}
}
const player = new Character("Jack");
console.log(player.introduce());
console.log(Character.complain());
this 가 다르다.
프로토타입 메소드 내부의 this는 클래스 object를 가리켜 인스턴스의 속성에 접근할 수 있다.
하지만 정적 메소드 내부의 this는 클래스 object를 가리키지 않아 인스턴스 속성에 접근할 수 없다.
'Programming > JavaScript' 카테고리의 다른 글
JavaScript - Number.isFinite, 전역 isFinite 차이 (0) | 2023.06.07 |
---|---|
JavaScript - 배열 요소 제거하기 (0) | 2023.06.07 |
JavaScript - 함수 선언문, 함수 표현식 호이스팅 (0) | 2023.05.30 |
JavaScript - 문자열 (0) | 2023.05.28 |
JavaScript - Browser: Document (1-1, 1-2) (0) | 2022.08.24 |