인프런 커뮤니티 질문&답변

호눅스님의 프로필 이미지
호눅스

작성한 질문수

타입스크립트 입문 - 기초부터 실전까지

프로토타입과 클래스와의 관계

객체의 prototype 속성에 대한 질문입니다.

해결된 질문

작성

·

173

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(nameage) {
        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);
호눅스님의 프로필 이미지
호눅스

작성한 질문수

질문하기