inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

메서드 데코레이터 강좌에서 target이 빈객체인 이유 문의드립니다.

해결된 질문

286

프린이

작성한 질문수 21

0

이미 동일한 질문이 있지만,

답변글을 읽어봐도, 이해가 되질 않아, 다시 문의 남깁니다.


#1. target이 빈객체인 이유
#2.클래스 Test 코드의 목적



#1. target이 빈객체인 이유

 

' 하지만 prototype chain 강의를 다시 봐보시면 Idol.prototype은 dance 함수를 갖을 수 없습니다.

prototype이 오히려 체인의 위에 있기 때문입니다.'

 

코드에서 어떤 이유 때문에, Idol.prototype은 dance 함수를 갖을 수 없는 걸까요?

체인의 위에 있다라는게 어떤 상황인지 궁금합니다.


dance함수는 Idol.prototype객체에 정의되어 있어, Idol클래스로 만든 모든 인스턴스는 Idol.prototype객체에 정의된 dance함수를 사용 할 수 있다

이외에는, 도무지 생각이 발전이 되질 않습니다.


자바스크립트 강좌를 다시 봤는데, 답변 남겨주신 코멘트 힌트를 발견하기 어려워 도움을 요청드립니다! 그 이유에 대해서 조금 설명을 추가 부탁드립니다!


 

#2. 클래스 Test 코드

class Test{ 
    propertyFunction = function(){ ....} 
    methodFunction(){ .... } 
} 

const instance = new Test(); 
console.dir(Test.prototype, {showHidden: true})

혹시

Test 클래스 예시를 보여주신 이유가,

 

(자바스크립트 강좌에서 설명해주신것 처럼)

인스턴스 메서드는 인스턴스마다 갖는 함수이기 때문에 확인이 안되고,

프로토타입은 공유해서 사용하는 것이기 때문에 확인이 된다는 개념과

그래서 console.dir()메서드에서 확인된다/되지 않는다

 

를 알려주시기 위한 목적일까요?

 

target이 빈 객체인 이유와 연결되어 이해할 내용인지 궁금해서 문의 드립니다!

 

감사합니다! :]

 

typescript

답변 1

1

코드팩토리

안녕하세요!

(1)

method로 선언할 경우에는 prototype에 정의가 됩니다. property로 정의할때는 인스턴스에 귀속됩니다.

이 부분은 console.dir을 실행한 후 showHidden 프로퍼티를 true로 전환해주면 확인 가능합니다.

아래 예제 첨부 해드립니다.

console.dir(target, {showHidden: true})

 

(2)

prototype의 값들이 일반적인 방법으론 확인이 어려운 이유는 아마 출력이 너무 복잡해지기 때문이지 않을까 생각됩니다.

그렇기때문에 (1)에서처럼 명시적으로 prototype 값들을 모두 출력 해야지만 볼 수 있게 설계 됐지 않을까 생각이 드네요.

 

혹시 제가 질문을 잘못 이해했다면 다시 질문 해주세요!

감사합니다!

0

프린이

안녕하세요!
귀한 답변 남겨주셔 감사합니다!

음,,죄송한데,

그럼 강좌에서 target이 {}로, 즉 빈 객체로 나오는 이유가

prototype의 값들이 일반적인 방법으론 확인이 어려우기 때문에,

console.log로 하면

target이 {} 로 출력 된걸까요?

즉, 확인이 어려운 것이 console.log에서 빈객체{}로 출력 되는걸까요?

 

그래서

그런 객체의 값을 보기 위해서는

console.dir(target, {showHidden: true})

코드를 알려주신걸까요,

 

method로 선언할 경우에는 prototype에 정의되는건 이해가 되는데,

(=Idol클래스로 생성된 인스턴스의 메서드는 Idol.prototype에 정의되어)

target이 Idol.prototype 이라고 생각되는데요,
강좌에서 빈객체로 {} 나오는 부분이 궁금했습니다

 

글 읽어 주셔 감사합니다!

 

 

 

 

 

 



1

코드팩토리

console.log()로 객체를 봤을때 왜 prototype과 관련된 모든 기능들이 나오지 않는지 제가 정확히 알 수는 없습니다. 이건 JS를 설계한 사람의 의도를 봐야하기 때문이죠. 위에서 답변드린건 '아마도' prototype의 모든 값들을 다 보여주면 객체의 속성이 너무 복잡해지기 때문이지 않았을까라는 제 생각을 말씀 드린겁니다.

ts강의 42. override 마지막즘 질문

0

45

1

25. js array의 문제점 4:55쯤 질문입니다

0

31

1

union 기본기 7분 53초 질문 드립니다.

0

118

2

Equality Narrowing 관련 질문

0

120

2

tsconfig.json 설명

0

125

2

환불 관련 질문 드립니다.

0

180

1

재너릭이랑 any 차이가 뭔가요?

0

222

2

리플렉션과 데코레이터 사용시 의문점

0

136

2

변수의 선언이 중복되었다고 할 때

0

164

2

type 으로 함수의 형식을 정의하고 함수를 정의할 때

0

147

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