Reflect 오브젝트
빌트인 오브젝트
- JSON,Math와 같이 글로벌 오브젝트 존재
Reflect.get()
construct 가 없으면 인스턴스 생성 불가
Reflect의 모든 메서드는 static 메서드
정적 메서드 이름과 Proxy handler 의 트랩 이름이 같음
Reflex.get(newProxy,”sports”)을 실행하면
newProxy의 get() 트랩이 호출됨
인스턴스를 생성하지 않음(직접 호출)
인스턴스 실행환경
Proxy.prototype으로 인스턴스 생성
생성한 인스턴스에서 prototype 참조
메모리 사용, 공유 환경 유지와 부가 처리 필요
Reflect는 인스턴스 실행환경이 필요하지 않음
Object.prototype은 모든 빌트인 오브젝트에 상속됨
- hasOwnProperty() 는 그다지 사용하지 않음, 비효율적
필요한 때에, 필요한 곳에서
- 오브젝트와 메서드를 지정하여 호출하면 효율적
자바스크립트의 기본적인 아키텍처는
원본 오브젝트의 prototype에 연결된 메서드를
인스턴스의 _proto_에서 공유(참조)
인스턴스마다 고유의 값을 유지하려는 것과는 다른 관점
이 시점에서 아키텍처를 바꿀수 없음
reflect는 이런 점을 고려한 접근
엔진 처리 효율성과 사용성 향상
get()
target 오프젝트에서 프로퍼티값 반환
오브젝트에서 프로퍼티 값을 구하는 형태
object[name] 형태를
Reflect.get(object,name) 형태로 사용
set()
target 오브젝트에 프로퍼티 키와 값 설정
Reflect.set(sportsObj, event[0],
- this.player || evnet[1]);
has()
apply() - call(), apply()