# Reflect

8개의 포스트

[Javascript] Proxy와 Reflect

https://ko.javascript.info/proxy

2023년 9월 8일
·
0개의 댓글
·

JavaScript Reflect

Reflect 객체는 ECMAScript 6(ES6)에서 추가된 내장 객체로서, JavaScript의 리플렉션(Reflection) 기능을 제공합니다. 리플렉션은 코드를 실행하는 동안 객체의 구조를 조사하고 수정하는 능력을 가리킵니다. Reflect 객체는 여러 유틸리티 메서드를 제공하여 객체의 속성, 프로퍼티, 메서드를 다루거나 프락시(Proxy)를 사용하는 데 도움이 됩니다. Reflect 객체의 주요 메서드는 다음과 같습니다: Reflect.apply(target, thisArgument, argumentsList): 지정한 함수(target)를 주어진 this 컨텍스트(thisArgument)로 호출하며, 인수들(argumentsList)을 전달합니다. Reflect.construct(target, argumentsList[, newTarget]): 지정한 생성자(target)를 주어진 인수들(argumentsList)로

2023년 7월 18일
·
1개의 댓글
·

ES6 Reflect

ES6에서 도입된 Reflect 객체는 JavaScript의 내장 객체로, 객체와 관련된 동작을 수행하기 위한 정적 메소드를 제공합니다. Reflect 객체의 메소드는 주로 객체의 프로퍼티 접근, 속성 설정, 메소드 호출 등의 작업을 보다 명확하고 간편하게 처리할 수 있도록 도와줍니다. Reflect 객체의 주요 메소드와 간단한 설명은 다음과 같습니다: Reflect.get(target, property [, receiver]): target 객체에서 property 이름의 속성 값을 가져옵니다. 선택적으로 receiver 객체를 지정하여 메소드 실행 컨텍스트를 변경할 수 있습니다. Reflect.set(target, property, value [, receiver]): target 객체의 property 이름의 속성 값을 value로 설정합니다. 선택적으로 receiver 객체를 지정하여 메소드 실행 컨텍스트를 변경할 수

2023년 7월 11일
·
0개의 댓글
·

[Go] Reflect three laws

Tl;DR Runtime 도중 인터페이스나 구조체의 타입을 확인하기 위해서 사용할 수 있는 문법 중 하나인 reflect에 대한 다양한 사용 방법을 정리해보자. 변수의 타입을 확인 하기. reflect에는 2개의 타입이 존재하는데 Type, Value 이 두가지가 존재한다. 두 타입은 interface 변수에 대한 접근을 가능하게 한다. 각 타입을 얻는데는 reflect.TypeOf, reflect.ValueOf 가 사용된다. Code Print: reflect.TypeOf(), reflect.ValueOf() 모두 인자로 any ( interface{} ) 타입을 받게 된다. Interface() 를 통한 inverse기능. Value Type은 Interface() 함수를 통해서 interface{} 타입으로 다시 되돌릴 수 있다. Code Print reflection object의 값을 변경

2023년 4월 18일
·
0개의 댓글
·
post-thumbnail

Chapter 14. 메타프로그래밍

1. 메타프로그래밍 2. 자바스크립트 프록시 패턴 3. Proxy & Reflect 4. Proxy.revocable 5. 활용 - 모든 프로퍼티 은닉화 6. 활용 - 한시적 접근 허용 1. 메타프로그래밍 > 메타프로그래밍(Metaprogramming)이란 자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 취급하며 프로그램을 작성·수정하는 것을 말한다. 넓은 의미에서, 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다. > https://ko.wikipedia.org/wiki/%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D 일

2023년 3월 6일
·
0개의 댓글
·
post-thumbnail

[JavaScript] Proxy와 Reflect

🍀 Proxy "Proxy"란 "대리"라는 의미를 가진 단어이다. 단어처럼 Proxy는 특정 객체를 감싼 후, 해당 객체에서 일어나는 작업을 가로채고, 그 순간 어떤 동작을 할 지 정의할 수 있도록 하는 객체이다. new Proxy(target, handler) 를 통해 프록시 객체를 생성한다. 두개의 파라미터를 가지는데, 첫 번째 매개변수(target)에는 대상인 객체를 넣어주고 두번째 매개변수(handler)에는 '내장 메서드'의 동작을 가로채 어떠한 작업을 수행하는 메서드(= '트랩')를 가진 객체를 넣어준다. 핸들러의 get, set 등의 매서드를 사용하여 트랩을 활성화시킬 타이밍을 결정할 수 있다. 핸들러 객체에 [매서드 이름] : [사용자 정의 함수]를 넣어 사용한다. 해당 메서드를 사용하면 [[get]], [[set]] 등의 내장 메서드의 호출을 가로챌 수 있다. 프록시 객체의 handler에 트랩을 정의하고 프록시 객체에

2023년 3월 1일
·
0개의 댓글
·

Golang 구조체의 필드를 동적으로 다루는 법

자바스크립트에서는 object 필드에 동적으로 접근하기가 매우 간단하다. 그래서 자바스크립트를 이용해서 개발할 때에는 이러한 방식을 많이 이용했었는데, Go로 개발을 시작하고나서는 이 방식을 쓸 수 없어서 한동안 불편했었다. 그런데 reflect 패키지를 사용하면 동적으로 구조체 필드에 접근 가능하다. 먼저 위에서 사용한 것과 같이 Person이라는 구조체가 있다고 하고 그 객체를 만들었을 때, 먼저 코드는 위와 같이 된다. 그리고 위 person 객체에서 Gretting 필드를 동적으로 가져오고 싶다고 하면 다음과 같은 코드를 이용하면 된다. 이런 식으로 따로 인터페이스를 이용하지 않고도 다이나믹한 프로그래밍이 가능하다. 또, 전체 필드 리스트를 가져오는 법은 다음과 같다. 이 두 방식을 조합하면 전체 필드값을 출력하는 등의 방식이 가능하다. 하지만 reflect 패키지를 자주 사용하는 것은 Go스럽지 않다고 한다.

2022년 10월 22일
·
0개의 댓글
·
post-thumbnail

[모던JS: Core] Proxy와 Reflect

Intro 본 포스팅은 여기에 올라온 게시글을 바탕으로 작성되었습니다. 파트와 카테고리 동일한 순서로 모든 내용을 소개하는 것이 아닌, 몰랐거나 새로운 내용 위주로 다시 정리하여 개인공부 목적으로 작성합니다. 중간중간 개인 판단 하에 필요하다고 생각될 시, 기존 내용에 추가로 보충되는 내용이 있을 수 있습니다. Proxy Proxy는 ES6(ES2015)에 도입된 문법이다. 구버전의 브라우저에서도 호환되도록 트랜스컴파일러(transcompiler)의 역할을 하는 바벨(Babel)에서 지원하지 않기 때문에 인터넷 익스플로러에서는 사용할 수 없다. 그라나 최신 브라우저의 경우에는 모두 지원하고 있다. Proxy의 의미는 위임, 대리인 등의 뜻을 갖고 있는데, 용어의 뜻에 걸맞게 컴퓨터 분야에서 다양한 의미로 사용되고 있다. 대표적으로 웹 서버에서 사용되는 Forward Proxy 또는 `Rev

2021년 6월 3일
·
0개의 댓글
·