Book/혼자 공부하는 자바스크립트

06-2. 객체의 속성과 메소드 사용하기

키모87 2022. 2. 7. 17:23

자료형

기본 자료형(primitives)과 객체 자료형(object)으로 구분할 수 있습니다.

자바스크립트 자료형

객체 자료형

속성과 메소드를 가질 수 있는 모든 것은 객체입니다. 함수와 배열도 객체로 표현됩니다.

const a= []

a.sample = 10

a.sample
//10

function b ()
{
}

b.sample =10

b.sample
//10

typeof a
//object

typeof b
//function

함수는 '실행이 가능한 객체'라는 특이한 자료로 typeof 연산자를 사용해서 자료형을 확인하면 "function"을 출력합니다.함수는 객체의 특성을 완벽하게 가지고 있으므로 자바스크립트에서는 함수를 일급객체(first-class object)에 속한다고 표현하기도 합니다.

 

기본 자료형

자바스크립트에서는 실체가 있는 것(undefinded와 null 등이 아닌것) 중에 객체가 아닌것을 기본 자료형(primitive type)이라고 부릅니다. 숫자, 문자열, 불이 바로 기본 자료형입니다.

 

기본 자료형을 객체로 선언하기

아래와 같이 기본 자료형을 선언할 수 있다.

const 객체 = new 객체 자료형 이름()

new Number(10)
new String('안녕하세요')
new Boolean(true)

단순한 기본 자료형이 아니므로 이전고 ㅏ다르게 속성을 가집니다. 다음과 같이 new Number()를 사용해서 숫자를 생성하면 숫자와 관련된 연산자도 모두 활용할 수 있으며, 속성과 메소드를 활용할 수 있습니다.

 

const f = new number(273)

typeof f
//"object"

f.sample =10

f
//Number{273,sample : 10}

f.valueOf()
//273

 

기본 자료형의 일시적 승급

기본 자료형은 속성과 메소드를 가질 수 없습ㄴ디ㅏ. 그런데 자바스크립트는 사용의 편리성을 위해 기본 자료형의 속성과 메소드를 호출할때 (기본 자료형 뒤에 온점을 찍고 무언가 하려고하면) 일실적으로 기본 자료형을 객체로 승급시킵니다.그래서 속성과 메소드를 사용할 수 있는 것입니다.

const h = '안녕하세요'

h.sample = 10 //일시적으로 객체로 승급되어 sample 속성을 추가할 수 있습니다.

h.sample //일시적으로 승급된 것이라 추가했던sample 속성은 이미 사라졌습니다. 
// undefined

 

프로토타입으로 메소드 추가하기

prototype 이라는 속성이 바로 객체 전체에 어떤 속성과 메소드를 추가할 수 있다면 기본 자료형 숫자도 속성과 메소드를 사용할 수 있습니다.

- 기본 자료형에 메소드 및 값을 추가할 수 있다. 

객체 자료형 이름.prototype.메소드 이름 = function () 
{

}

Number.prototype.sample = 10

const i = 273

i.sample //sample 속성을 갖고 있습니다.

Number.prototype.power = function (n=2){
	return this.valueOf() ** n
}

const a = 12
a.power()
//144