메서드 데코레이터 강좌에서 target이 빈객체인 이유 문의드립니다.
이미 동일한 질문이 있지만,
답변글을 읽어봐도, 이해가 되질 않아, 다시 문의 남깁니다.
#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이 빈 객체인 이유와 연결되어 이해할 내용인지 궁금해서 문의 드립니다!
감사합니다! :]
답변 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





