5.4 JavaScript 정적 메소드

지구·2023년 7월 20일
0

JavaScript

목록 보기
28/30

Array의 메소드 중에서 isArray는 다른 메소드들과 다르게 위 사진처럼 앞에 prototypes가 붙어 있지 않다.

prototypes이 붙어 있는 메소드와 prototypes이 없는 메소드의 차이점은 무엇인지 알아보자.

  • prototypes 메소드: prototypes이 앞에 붙어있는 메소드
  • 정적 메소드: prototypes이 붙어 있는 메소드 (ex: isArray)로 보조 기능을 한다.

정적 메소드 만드는 방법

class User {
	constructor(first, last) {
		this.firstName = first
		this.lastName = last
	}
	getFullName: function() {
		return `${this.firstName} ${this.lastName}`
	}
	static isUser(user) {
		if (user.firstName && user.lastName) {
			return true
		}
		return false
	}
}

const jigu = new User('jigu', 'Kim')
const neo = new User('Neo', 'Anderson')
const lewis = { name: 'lewis Yang', age: 85}

console.log(jigu) 
console.log(neo)

console.log(User.getFullName) // 에러 발생 ______1
console.log(jigu.isUser) // 에러 발생 ___________2

console.log(User.isUser(jigu)) // true ________3
console.log(User.isUser(neo)) // true
console.log(User.isUser(lewis)) // false_______4

인스턴스가 아닌 User 자체에 getFullName이라는 함수를 사용하면 1번 코드와 같이 에러가 발생한다.

인스턴스가 아닌 User에 직접 사용할 수 있는 메소드를 만드려면 이름 앞에 static을 작성하면 되고 그것을 정적 메소드라고 한다.

이렇게 생성한 정적 메소드는 2번 코드처럼 인스턴스에 사용하면 함수가 아니라 호출할 수 없다는 메세지와 함께 에러가 발생한다.

이 정적 메소드를 3번 코드와 같이 작성하면 jigu라는 객체는 User클래스가 맞다는 것을 확인할 수 있다. 4번처럼 조건에 만족하지 않는 lewis라는 객체는 false가 출력된다.

profile
프론트엔트 개발자입니다 🧑‍💻

0개의 댓글