해결된 질문
작성
·
231
·
수정됨
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이 빈 객체인 이유와 연결되어 이해할 내용인지 궁금해서 문의 드립니다!
감사합니다! :]
답변 1
1
안녕하세요!
(1)
method로 선언할 경우에는 prototype에 정의가 됩니다. property로 정의할때는 인스턴스에 귀속됩니다.
이 부분은 console.dir을 실행한 후 showHidden 프로퍼티를 true로 전환해주면 확인 가능합니다.
아래 예제 첨부 해드립니다.
console.dir(target, {showHidden: true})
(2)
prototype의 값들이 일반적인 방법으론 확인이 어려운 이유는 아마 출력이 너무 복잡해지기 때문이지 않을까 생각됩니다.
그렇기때문에 (1)에서처럼 명시적으로 prototype 값들을 모두 출력 해야지만 볼 수 있게 설계 됐지 않을까 생각이 드네요.
혹시 제가 질문을 잘못 이해했다면 다시 질문 해주세요!
감사합니다!
console.log()로 객체를 봤을때 왜 prototype과 관련된 모든 기능들이 나오지 않는지 제가 정확히 알 수는 없습니다. 이건 JS를 설계한 사람의 의도를 봐야하기 때문이죠. 위에서 답변드린건 '아마도' prototype의 모든 값들을 다 보여주면 객체의 속성이 너무 복잡해지기 때문이지 않았을까라는 제 생각을 말씀 드린겁니다.
안녕하세요!
귀한 답변 남겨주셔 감사합니다!
음,,죄송한데,
그럼 강좌에서 target이 {}로, 즉 빈 객체로 나오는 이유가
prototype의 값들이 일반적인 방법으론 확인이 어려우기 때문에,
console.log로 하면
target이 {} 로 출력 된걸까요?
즉, 확인이 어려운 것이 console.log에서 빈객체{}로 출력 되는걸까요?
그래서
그런 객체의 값을 보기 위해서는
console.dir(target, {showHidden: true})
코드를 알려주신걸까요,
method로 선언할 경우에는 prototype에 정의되는건 이해가 되는데,
(=Idol클래스로 생성된 인스턴스의 메서드는 Idol.prototype에 정의되어)
target이 Idol.prototype 이라고 생각되는데요,
강좌에서 빈객체로 {} 나오는 부분이 궁금했습니다
글 읽어 주셔 감사합니다!