inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스

Method Decorator (메서드 데코레이터)

target이 빈 객체인 이유

312

정민교

작성한 질문수 50

1

TestMethodDecorator 의 파라미터 target이 콘솔에 빈 객체로 찍히는 이유를 잘 모르겠는데 혹시 설명해주실 수 있으실까요?

클래스가 평가되어서 생성자 함수 객체가 생성되고, 생성자 함수 객체의 prototype 프로퍼티를 가지고 있는걸로 알고있는데

그러면 프로토타입 객체는 dance 메서드를 가지고 있는 객체가 콘솔로 찍혀야 하는 것이 아닌가 하고 생각하고 있었는데 빈 객체가 찍혀서 이유를 잘 모르겠습니다.

typescript

답변 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

정민교

prototype 객체의 프로퍼티들이 숨겨져 있어서 보여주지 않는다는 사실은 몰랐습니다.

코팩님 자바스크립트 강의를 보고 알게되었네요

0

코드팩토리

아 죄송합니다 제가 거꾸로 생각했습니다. property function으로 선언하면 인스턴스에 귀속되고 method로 선언하면 prototype에 귀속되는게 맞습니다! 아래 예제 첨부 해드립니다!

class Test{
  propertyFunction = function(){

  }

  methodFunction(){

  }
}

const instance = new Test();

console.dir(Test.prototype, {showHidden: true})

출력엔 methodFunction만 존재합니다!

0

정민교

답변 감사합니다!

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