ES6 Reflect

Reflect는 object에 특정 행동을 수행할 수 있는 여러 정적 메소드를 제공해주는 전역 객체다. 간단한 메소드를 알아보자

1. get

const obj = {
  message: 'hello',
}

const result = Reflect.get(obj, 'message')
console.log(result) // hello

2. set

const obj = {
  message: 'hello',
}

Reflect.set(obj, 'message', 'world')
console.log(obj) // { message: "world" }

3. has

const obj = {
  message: 'hello',
}

Reflect.has(obj, 'message') // true
Reflect.has(obj, 'text') // false
Reflect.has(obj, 'toString') // true

in operator와 동일하게 동작하기 때문에 기본 내장 프로퍼티도 감지한다.

4. apply

Function.prototype.apply와 차이점은 있지만 기본적인 행동은 동일하게 동작한다. 즉, this와 arguments를 동적으로 전달하여 함수를 호춢한다.

function sum(a: number, b: number) {
  return a + b
}

const result = Reflect.apply(sum, null, [4, 5]) // 9

이 외에도 여러 메소드들이 존재한다.