@Decoratort 관련하여 설명 좀 더 부탁드립니다.
244
작성한 질문수 8
데코레이터는 그냥 함수라고 하셨는데,
예제소스에 보면, 생성자 함수를 받아서 속성을 추가 못하게 막았다고 하는데, 어떤원리인지 좀 궁금합니다.
Greeter 클래스에
@sealed 데코레이터가 있는데,
그러면, sealed 함수에 인자로 Greeter가 넘어가나요?
답변 2
1
안녕하세요. ChangHyeon Bae님!
클래스 데코레이터에 대해서 질문해주신것 같아요.
결론만 먼저 말씀드리면 sealed 함수의 인자는 Greeter의 constructor(생성자 함수)가
넘어가게 됩니다.
강의에서는 가볍게 짚고 넘어갔던 부분이라 좀더 자세히 설명을 드려보자면
먼저 클래스 데코레이터는 클래스 생성자에 관여합니다.
런타임시에 호출되며, 이때 데코레이터가 사용된 클래스의 생성자 (constructor)를 파라미터로 받습니다.
강의에서 보여드린 코드로 다시 설명을 드리면,
1. 런타임시에 Greeter 클래스 코드를 읽어들일때,
2. 이 때, sealed 함수가 호출되고, sealed의 constructor 파라미터는 Greeter의 constructor 함수입니다. 이 함수 내부에서 constructor를 수정할 수 있습니다.


따라서 sealed라는 데코레이터는
Greeter의 constructor(생성자) 함수를 Object.seal이라는 기능을 이용해서 객체를 밀봉하여
속성을 추가할 수 없고, 삭제도 할수 없는 안전한 함수로 만들었습니다.
이해가 좀 되셨을까요? ㅎㅎ
다른 궁금한점이 또 있으시면 편하게 질문 남겨주세요!
소스 공유좀 해주세요
0
252
0
target null 에러뜨시는 분들
0
331
0
라우터 구조잡기 소스
0
285
0
새로 추가한 인스턴스 상태 관리
0
247
0
App.vue의 $store
0
193
0
npm run serve 에러
0
221
0
Cannot find module '@/components/message.vue' or its corresponding type declarations.
0
1152
2
prop !
0
194
0
@ MutationActions
0
179
0
mapGetters 내 정의가 안되요 ㅠ
0
260
0
안녕하세요! @Prop() readonly id(느낌표):string; 에서 !(느낌표) 를 찍는 이유가 궁금합니다 :)
0
227
0
store 사용 방법 관련 질문입니다.
0
240
1
moduleA.store.ts내에서 RootState가 하는일은 무엇인가요?
0
179
0
removeItem 에서 element 가 하나 남았을 때 삭제가 되지 않는 문제
0
373
2
Property '$route' does not exist on type 'ItemList'. 이 에러는 무엇인가요..?
0
862
1
Cannot find module '@/components/message.vue'.
0
2873
6
@Action, @Mutation 등으로 지정된 변수의 타입
0
231
1
안녕하세요. 강의 잘 들었습니다.
0
168
0
Axios Post보낼때 어떤 식으로 구성하는게 좋을까요?
0
663
1
안녕하세요! v-for(v-bind:key), slice() 관련 질문이 있어요!
2
667
3
에러 표시 질문이요!
1
403
3
vuex-module-decorators 보다 오리지널 모듈 형태를 선호하시는 이유가 무엇이신가요?
1
381
2
안녕하세요. 초기 셋팅시 질문있습니다.
1
296
2
안녕하세요! Vuex, actions 질문이 있습니다.
1
305
2





