prototype에 메소드를 추가하는 방식을 쓰면 객체가 아니라 기본 자료형인 숫자나 문자열에도 메소드를 넣을 수 있다.
기존에 객체에다가는 아래와 같은 형태로 eat 메소드를 추가했었다. 그러나 숫자나 문자열에는 메소드를 넣는다는 게 상상이 안되었었다.
const pet = {
name: '구름',
eat (food) {
alert(this.name + '은/는 ' + food + '을/를 먹습니다.')
}
}
// 메소드를 호출합니다.
pet.eat('밥')
하지만 숫자든 문자든 그 prototype에 메소드를 추가하면 해당 prototype에 속하는 모든 자료에 대해서 메소드를 사용할 수 있다.
일단 숫자에다가 넣어보자. 그 숫자를 제곱해주는 메소드다. (마지막 두 줄은 valueOf() 를 알아보기 위해 넣었다.)
// power() 메소드를 추가합니다.
Number.prototype.power = function (n = 2) {
return this.valueOf() ** n
}
// Number 객체의 power() 메소드를 사용합니다.
const a = 12
console.log('a.power():', a.power())
console.log('a.power(3):', a.power(3))
console.log('a.power(4):', a.power(4))
f = 32;
console.log(f.valueOf())
뭐 이미 자바스크립트에는 제곱연산자(**) 메소드가 있기 때문에 위와 같은 메소드를 쓸 일은 없을 것이다. 하지만 숫자라는 데이터 유형 자체에 대해서 다른 메소드들을 만들 수 있으므로 유용할 예정^^이다.
'자바스크립트 리뷰' 카테고리의 다른 글
Number () 정리 [혼공자 6-2. 268p] (0) | 2023.04.08 |
---|---|
문자열과 배열의 prototype에 메소드 추가하기: 특정 데이터가 문자열이나 배열에 들어가 있는지 확인하는 기능 [혼공자 6-2-2] (0) | 2023.04.08 |
객체 내부의 메소드를 실행하는 명령어 [혼공자 확인문제 6-1-4] (0) | 2023.04.08 |
객체의 속성으로 함수를 쓸때, 화살표 함수는 쓰지 않는다. [혼공자6-1-5] (0) | 2023.04.08 |
동적으로 객체 속성 추가하기 / 제거하기 [혼공자 6-1-2 ~ 3] (0) | 2023.04.07 |