js-프로토타입

쁘띠경·2024년 8월 5일

js

목록 보기
30/41

이전파일과 같이 보자 !!!!!!

객체 생성자 함수를 선언하여 객체를 생성하고 속성과 함수를 등록하여 사용할때
앞에서 배운 내용대로 메서드를 사용하면 객체를 생성한만큼 함수가 등록된다.
그리고 함수를 여러 개 등록하면 메모리 공간을 많이 차지하여 메모리를 낭비하게 된다.
이럴때 객체 생성자 함수에 프로토타입을 사용하여 함수를 등록하면 메모리 낭비를 줄일수 있다.

프로토타입의 사전적인 의미는 '원형'이다. 즉, '원래의 형태(=유전자)'를 뜻한다.
프로토타입을 사용하여 함수를 등록하면 함수는 유전자 (프로토타입)에서 생성된 객체를
공유할 수 있다. 즉, 여러개의 함수를 등록할 필요가 없다.

    [기본형]
    function 함수명(매개변수...){
    
     this.속성명 = 새 값;    // 객체의 프로퍼티(속성)


     함수명. prototype. 함수명2 = function(){  // 객체의 프로토타입 메서드
     자바스크립트코드;
        }
    }
    
    let 변수명 = new 함수명1();

    변수명. 함수명2(); <- 프로토타입으로 만들어둔 메서드 호출


이전에 (전 게시글 참고) 만들었던 함수는 맥스와 민값도 있었지만
여기선 getinfo minhight 등이 없다.

전의 값!

이렇게 한 번에 나와서 메모리를 더 차지한다.

하지만 프로토타입은

화살표를 열면 밑의 정보가 뜬다.
훨씬 더 쉽고, 작은 메모리로 저장할 수 있다. 실제로 없어진 건 아니고 부모가 그 값을 갖고 있다. 이걸 자식이 꺼내서 쓸 수 있다는 것이다.

제일 하단에 화살표를 눌러보면 또 여러가지 속성이 뜬다.
constructor은 객체함수의 이름이다.

만약,,,,,,,,,,,,,,,,,,,,,,,,

겟인포는 콘솔창에 없었는데 도큐먼트 출력하니까 나오게 된다.
자식한테 메서드 실행해!! 라고 했더니 나온 격
이건 부모가 갖고 있는거라서 자식이 빼서 온거임 !
kim이라는 객체에 info라는 메서드를 찾고 없다면 kim이라는 객체를 만들어낸 부모한테 찾고 이런식으로 위로 계속 올라간다!

profile
안녕하세요 ! 발전을 위해 매일 도전하는 퍼블리셔 류영경입니다.

0개의 댓글