자바스크립트 리뷰
숫자 prototype에 메소드 추가하기 [혼공자 6-2-1]
가문비7
2023. 4. 8. 11:38
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())
뭐 이미 자바스크립트에는 제곱연산자(**) 메소드가 있기 때문에 위와 같은 메소드를 쓸 일은 없을 것이다. 하지만 숫자라는 데이터 유형 자체에 대해서 다른 메소드들을 만들 수 있으므로 유용할 예정^^이다.