• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 constructor, prototype 연습문제 질문

constructor, prototype 연습문제 질문

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #59346
    두 번째 문제 풀다가 궁금한 게 생김요
    
    function Parent(){
      this.name = 'Kim';
    }
    var a = new Parent();
    a.__proto__.name = 'Park';
    console.log(a.name)
    
    -----
    
    여기서 a.__proto__.name은 a를 생성한 부모의 프로토타입에 접근해서 프로토타입 name값을 'Park'으로 등록한 거잖아요
    그래서 저 선언이 끝나고 난 뒤에 부모로부터 새로 생성되는 인스턴스는 name값이 Park으로 바뀔 줄 알았더니
    name은 그대로 Kim으로 나오더라구얌
    
    그래서 Parent를 입력해보니 ƒ Parent(){this.name = 'Kim';}으로 겉으로 보이는 정보는 똑같고
    Parent.prototype으로 까보면 {name: 'Park', constructor: ƒ}으로 프로토타입 정보는 바뀐 게 확인됩니다.
    
    이렇게 constructor에서 this로 정의된 Key값과 Prototype으로 정의된 Key값이 일치할 때에는
    constructor에서 선언된 Key값이 우선적으로 적용되는 건가여?
    
    #59352
    아 그리고 네 번째 문제 정답에 버그 있어염
    
    
    Array.prototype.remove3 = function(){
      for (var i = 0; i < this.length; i++) {
        if ( this[i] === 3 ) {
          this.splice(i,1);
        }
      }
    };
    var arr = [1,2,3,4];
    arr.remove3();
    
    이렇게 하면 3이 없어지기는 하는데
    3이 연속으로 나열된 변수에다 적용하니 
    
    var arr2 = [3,3,3,3,3,3,3,3,2]
    arr2.remove3()
    → 결과가 [3,3,3,2] 출력
    
    요렇게 나오네여
    splice 함수 실행되고 배열 구조가 바뀌면서 i값이 한 단계 더 넘어가서 생기는 문제 같아서
    
    Array.prototype.remove3 = function() {
      for (var i = 0; i < this.length; i++) {
        if (this[i] === 3) {
          this.splice(i, 1);
          i -= 1; <- 요거 추가함
        }
      }
    };
    
    요렇게 실행하니 해결됐슴다
    칭찬해주셈
    
    
    #59380

    codingapple
    키 마스터
    자바스크립트는 object에서 .어쩌구 출력시 가장 가까운거부터 먼저 출력합니다 
    잘하였읍니다
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠