--- title: Reflect slug: Web/JavaScript/Reference/Global_Objects/Reflect tags: - ECMAScript 2015 - JavaScript - Reference - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect ---
{{JSRef}}

Reflect는 중간에서 가로챌 수 있는 JavaScript 작업에 대한 메서드를 제공하는 내장 객체입니다. 메서드의 종류는 프록시 처리기와 동일합니다. Reflect는 함수 객체가 아니므로 생성자로 사용할 수 없습니다.

설명

다른 대부분의 전역 객체와 다르게, Reflect는 생성자가 아닙니다. 따라서 함수처럼 호출하거나 new 연산자로 인스턴스를 만들 수 없습니다. {{jsxref("Math")}} 객체처럼, Reflect의 모든 속성과 메서드는 정적입니다.

Reflect 객체의 정적 메서드 이름은 프록시 처리기 메서드의 이름과 같습니다.

일부 메서드는 {{jsxref("Object")}}에도 존재하는 메서드이지만 약간의 차이가 있습니다.

정적 메서드

{{jsxref("Reflect.apply()")}}
대상 함수를 주어진 매개변수로 호출합니다. {{jsxref("Function.prototype.apply()")}}도 참고하세요.
{{jsxref("Reflect.construct()")}}
함수로 사용하는 new 연산자입니다. new target(...args)을 호출하는 것과 같습니다. 다른 프로토타입을 지정하는 추가 기능도 가지고 있습니다.
{{jsxref("Reflect.defineProperty()")}}
{{jsxref("Object.defineProperty()")}}와 비슷합니다. {{jsxref("Boolean")}}을 반환합니다.
{{jsxref("Reflect.deleteProperty()")}}
함수로 사용하는 delete 연산자입니다. delete target[name]을 호출하는 것과 같습니다.
{{jsxref("Reflect.get()")}}
대상 속성의 값을 반환하는 함수입니다.
{{jsxref("Reflect.getOwnPropertyDescriptor()")}}
{{jsxref("Object.getOwnPropertyDescriptor()")}}와 비슷합니다. 주어진 속성이 대상 객체에 존재하면, 그 속성의 서술자를 반환합니다. 그렇지 않으면 {{jsxref("undefined")}}를 반환합니다.
{{jsxref("Reflect.getPrototypeOf()")}}
{{jsxref("Object.getPrototypeOf()")}}와 같습니다.
{{jsxref("Reflect.has()")}}
함수로 사용하는 in 연산자입니다. 자신의, 혹은 상속한 속성이 존재하는지 나타내는 {{jsxref("Boolean")}}을 반환합니다.
{{jsxref("Reflect.isExtensible()")}}
{{jsxref("Object.isExtensible()")}}과 같습니다.
{{jsxref("Reflect.ownKeys()")}}
대상 객체의 자체 키(상속하지 않은 키) 목록을 배열로 반환합니다.
{{jsxref("Reflect.preventExtensions()")}}
{{jsxref("Object.preventExtensions()")}}와 비슷합니다. {{jsxref("Boolean")}}을 반환합니다.
{{jsxref("Reflect.set()")}}
속성에 값을 할당하는 함수입니다. 할당 성공 여부를 나타내는 {{jsxref("Boolean")}}을 반환합니다.
{{jsxref("Reflect.setPrototypeOf()")}}
객체의 프로토타입을 지정하는 함수입니다. 지정 성공 여부를 나타내는 {{jsxref("Boolean")}}을 반환합니다.

명세

Specification
{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}}

예제

객체가 특정 속성을 가지고 있는지 검사하기

const duck = {
  name: 'Maurice',
  color: 'white',
  greeting: function() {
    console.log(`Quaaaack! My name is ${this.name}`);
  }
}

Reflect.has(duck, 'color');
// true
Reflect.has(duck, 'haircut');
// false

객체 자체 키를 반환하기

Reflect.ownKeys(duck);
// [ "name", "color", "greeting" ]

객체에 새로운 속성 추가하기

Reflect.set(duck, 'eyes', 'black');
// returns "true" if successful
// "duck" now contains the property "eyes: 'black'"

브라우저 호환성

{{Compat("javascript.builtins.Reflect")}}

같이 보기