메소드(method) : 객체의 속성 중 함수 자료형을 말한다.
this
객체가 스스로를 가리킬때 사용한다.
let obj = {
name: 'roses'
state: 'rolling'
get_state: function () {
let state = 'studying'
return this.state
}
}
// 출력: rolling → get_state 함수에서 사용된 'this'는 obj 객체를 의미한다.
단, 화살표 함수에서의 this는 상황에 따라 다른 객체를 가리킨다.
객체 자료형 : 속성과 메소드를 가질 수 있는 모든 것
※ 기본 자료형은 속성과 메소드를 가질 수 없으나, 자료형.prototype 이라는 객체로 "일시적 승급"하는 기능이 있어 해당 자료형 객체의 속성과 메소드를 사용할 수 있다.
프로로타입으로 메소드 추가하기
자료형.prototype.속성 = 속성값;
자료형.prototype.메소드이름 = function () {}
위와 같은 방식으로 기존 자료형 객체에 속성 또는 메소드를 추가할 수 있다.
Number.prototype.won = function () {
return this.valueOf()+'원'
}
let price = 10000;
console.log(price.won()) // 출력값 : 10000원
기본 자료형(Number, String, Boolean)을 객체로 선언하기.
let 객체이름 = new 객체 자료형 이름 ()
let numberObj = new Number()
속성 존재 여부 확인
객체에 없는 속성을 호출할 경우 undefined
값을 반환받는다. 이 점과 || 연산자를 사용하여 아래와 같이 default 값을 설정할 수 있다.
let obj = { name: 'name' }
obj.author = obj.author || '저자 미상' // author 라는 속성이 없을 경우 속성을 추가하고 '저자 미상'을 dafult 값으로 사용한다.
다중 할당
배열/객체를 여러개의 변수에 대입할 수 있다.
let arr = [1, 2, 3]
let [a, b, c] = arr // let a = arr[0], let b = arr[1], let c = arr[2] 와 같다.
let obj = { name: 'name', age: 'age' }
let { name, age } = obj // let name = obj.name, let age = obj.age 와 같다.
let { a=name, b=age } = obj // let a = obj.name, let b - obj.age 와 같다.