--- title: Reflect slug: Web/JavaScript/Reference/Global_Objects/Reflect tags: - ECMAScript 2015 - JavaScript - Reference - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect ---
Reflect는 중간에서 가로챌 수 있는 JavaScript 작업에 대한 메서드를 제공하는 내장 객체입니다. 메서드의 종류는 프록시 처리기와 동일합니다. Reflect는 함수 객체가 아니므로 생성자로 사용할 수 없습니다.
다른 대부분의 전역 객체와 다르게, Reflect는 생성자가 아닙니다. 따라서 함수처럼 호출하거나 new 연산자로 인스턴스를 만들 수 없습니다. {{jsxref("Math")}} 객체처럼, Reflect의 모든 속성과 메서드는 정적입니다.
Reflect 객체의 정적 메서드 이름은 프록시 처리기 메서드의 이름과 같습니다.
일부 메서드는 {{jsxref("Object")}}에도 존재하는 메서드이지만 약간의 차이가 있습니다.
new 연산자입니다. new target(...args)을 호출하는 것과 같습니다. 다른 프로토타입을 지정하는 추가 기능도 가지고 있습니다.delete 연산자입니다. delete target[name]을 호출하는 것과 같습니다.in 연산자입니다. 자신의, 혹은 상속한 속성이 존재하는지 나타내는 {{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")}}