인프런 커뮤니티 질문&답변
객체의 prototype 속성에 대한 질문입니다.
해결된 질문
작성
·
199
1
검색을 살짝 해 봤는데 헷갈리는 부분이 있어서 질문 남깁니다.
생성자 함수에는 prototype이라는 속성이 있고, 생성자로 만든 객체에는 __proto__ 가 있는데 둘이 같네요?
Person.prototype === seho.__proto__
까지 썼는데 질문을 잊어버렸습니다 ㅋㅋㅋㅋ.
무언가 많이 복잡하고 혼란스럽네요. 이해할 듯 말듯한 이 느낌.
원래 질문은 생각이 안 나지만 추가적으로...
Person.prototype.numEye = 2;
이런식으로 static 변수처럼 사용해도 되는 걸까요?
답변 2
2
캡틴판교
지식공유자
안녕하세요 교수님 제가 답이 늦었네요 :) 먼저 프로토타입 질문은 크롬에서 prototype이 __proto__로 표시됩니다 :) 코드 상으로 저희가 작성한 prototype의 실질적인 결과물은 __proto__로 표시된다고 보시면 될 것 같아요 :) 그리고 static 용도의 변수는 const로 선언해서 import 하여 사용하는게 일반적인데 프로토타입의 속성으로 쓰셔도 크게 상관없지 않을까.. 생각합니다 ㅋㅋ
클래스 코드는 직접 컴파일한 결과를 확인해 보셨군요. 첨부해 주셔서 저도 잘 봤습니다 :) 담주 초에 타입스크립트 후속 영상 개시할 예정인데 고거 나오면 한번 말씀 드릴게용 :)
2
호눅스
질문자
자답이지만, 아래쪽 TS 클래스 강의 듣고 제가 작성한 코드르 JS로 변환해 보니 조금 더 깨달음이 왔어요. 감사합니다!
class Dog {
public name: string;
private age: number;
public static numTail: number;
constructor(name, age) {
this.name = name;
this.age = age;
Dog.numTail = 1;
}
hi() {
console.log(`Hello ${this.name}: ${this.age} ${Dog.numTail}`);
}
}
function foo(d: Dog) : void {
d.hi();
}
const d1 = new Dog('Nabi', 3);
const d2 = new Dog('Zelda', 10);
foo(d1);
foo(d2);
var Dog = (function () {
function Dog(name, age) {
this.name = name;
this.age = age;
Dog.numTail = 1;
}
Dog.prototype.hi = function () {
console.log("Hello " + this.name + ": " + this.age + " " + Dog.numTail);
};
return Dog;
})();
function foo(d) {
d.hi();
}
var d1 = new Dog('Nabi', 3);
var d2 = new Dog('Zelda', 10);
foo(d1);
foo(d2);




