target이 빈 객체인 이유
312
작성한 질문수 50
TestMethodDecorator 의 파라미터 target이 콘솔에 빈 객체로 찍히는 이유를 잘 모르겠는데 혹시 설명해주실 수 있으실까요?
클래스가 평가되어서 생성자 함수 객체가 생성되고, 생성자 함수 객체의 prototype 프로퍼티를 가지고 있는걸로 알고있는데
그러면 프로토타입 객체는 dance 메서드를 가지고 있는 객체가 콘솔로 찍혀야 하는 것이 아닌가 하고 생각하고 있었는데 빈 객체가 찍혀서 이유를 잘 모르겠습니다.
답변 1
0
안녕하세요!
target === Idol.prototype을 출력해보면 true가 나옵니다.
하지만 prototype chain 강의를 다시 봐보시면 Idol.prototype은 dance 함수를 갖을 수 없습니다.
prototype이 오히려 체인의 위에 있기 때문입니다.
감사합니다!
0
코팩님 강의 프로토타입 체인 강의를 듣던 도중
console.dir(_ , {showHidden: true)
가 있다는 사실을 알게 되었고
class Idol {
name: string;
constructor(name: string) {
this.name = name;
}
@TestMethodDecorator
dance() {
return `${this.name}가 춤을 춥니다.`;
}
}
function TestMethodDecorator(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
console.log(target === Idol.prototype);
console.dir(target, {showHidden: true});
}위와 같이 콘솔을 찍어봤습니다.

위와 같이 Idol.prototype 객체가 dance 함수를 가지는 게 맞는 것 같은데 아닌가요..?
0
아 죄송합니다 제가 거꾸로 생각했습니다. property function으로 선언하면 인스턴스에 귀속되고 method로 선언하면 prototype에 귀속되는게 맞습니다! 아래 예제 첨부 해드립니다!
class Test{
propertyFunction = function(){
}
methodFunction(){
}
}
const instance = new Test();
console.dir(Test.prototype, {showHidden: true})출력엔 methodFunction만 존재합니다!
ts강의 42. override 마지막즘 질문
0
45
1
25. js array의 문제점 4:55쯤 질문입니다
0
31
1
union 기본기 7분 53초 질문 드립니다.
0
119
2
Equality Narrowing 관련 질문
0
120
2
tsconfig.json 설명
0
125
2
환불 관련 질문 드립니다.
0
181
1
재너릭이랑 any 차이가 뭔가요?
0
222
2
리플렉션과 데코레이터 사용시 의문점
0
136
2
변수의 선언이 중복되었다고 할 때
0
165
2
type 으로 함수의 형식을 정의하고 함수를 정의할 때
0
148
1
declare 키워드가 가끔 나오던데 이건 뭔가요?
0
152
2
class가 값이 될 수 있다는 말을 이해하기 어렵습니다.
0
128
1
null값의 타입은 object 아닌가요?
0
189
1
타입? 인터페이스? 질문있습니다
0
148
1
type functionOnly = Extract<string| (()=> void), Function> 의 의미
0
171
2
npm install cache error
0
206
1
12_experimental_decorator, class decorator
0
132
1
9_class/7_override.ts, super 키워드 질문
0
212
2
강의 계획이 궁금합니다!
0
290
1
instantiator 질문
0
151
1
따라하는데 에러 생기네요
1
397
2
webstorm에서 ts-node 설치해도 문제가 발생하고 있습니다.
0
489
3
infer를 사용한 type의 쓰임새
0
133
1
혹시 수업하면서 작성된 코드는 따로 받아 볼 수 없나요?
0
207
1





