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

home2 게시판 JavaScript, TS 게시판 구조분해할당 질문

구조분해할당 질문

  • 이 주제에는 11개 답변, 2명 참여가 있으며 frysweet3 년, 4 월 전에 전에 마지막으로 업데이트했습니다.
10 글 보임 - 1 에서 10 까지 (총 12 중에서)
  • 글쓴이
  • #25569

    frysweet
    참가자

    선생님 '클래스'의 프로퍼티도 구조 분해 할당 할 수 있나요?

    예를 들어서,

    클래스 A 에 class A { get 함수1(), set 함수1() } 이 선언되어 있고 클래스 B에서 클래스 A를 모듈로 끌어다 사용한다면..

    클래스 B 안에서

    const { 함수1 } = 클래스 A  라고 할당한다면, const 함수1 은 클래스 A의 get 함수1 이 되는 것인지, set 함수1 이 되는 것인지 궁금합니다.

    #25579

    codingapple
    키 마스터

    일단 const { 함수1 } = 클래스 A  이렇게 class는 destructuring이 안될듯 싶은데요 

    만들어놓은 A.prototype.함수1을 다른 변수나 자료에 집어넣어서 쓰는건 되긴 될듯요 

    #25683

    frysweet
    참가자

    답변 감사합니다. 클래스는 구조분해 할당이 안되는 군요...

    그렇다면 클래스 A 를 new 생성자 를 통해 인스턴스를 생성한 경우엔, 구조분해 할당이 될까요?

    클래스 A 는 
    class A {
    get a( ) {...} ,
    set a( ){...}
    } 이고, 

    클래스 A를 모듈로 끌어다 쓰는 클래스 B 안에서, const { a } = new A( ); 로 클래스 A의 인스턴스를 할당해 놓는다면,

    인스턴스도 객체이므로 할당이 되는걸까요

    만약 할당이 된다면 동일한 이름의 get, set 프로퍼티 중 어느것이 할당되는 것인지 궁금합니다.

    #25707

    codingapple
    키 마스터

    class안에 그냥 적은 함수는 prototype에 추가되어있기 때문에 저 경우는 안될듯요

    #25742

    frysweet
    참가자

    아 .. ㅠㅠ 그렇군요.. 어떻게 해석해야 하는지 깜깜하네요ㅠㅠ 

    JS 변수 할당 문법 해석이 너무 어렵습니다..

    1. 클래스 A, 클래스 B 파일들을 웹팩으로 'context' 를 생성하고,

    2. context 안의 클래스들을 각각 생성자 함수로 인스턴스들을 생성해서

    3.  각각의 인스턴스들을  'const modules'  변수에 { 인스턴스 이름 : 인스턴스 } 형식으로 할당해 놓았는데요..

    4. 

    클래스 B 모듈 파일에서, 각각의 인스턴스들이 들어간 변수 'modules' 를 사용하여 ,modules.[클래스A 인스턴스이름] 형식으로 호출해서 const { a } = modules.['클래스A' 인스턴스 이름] 으로 할당해놓았거든요.

    그런데 { a } 의 a의 이름과 일치하는 프로퍼티가 모듈 A에 get, set 함수 밖에 없습니다..

    이럴때 const  { a } 에는 모듈 A 자체가 할당 되었다고 봐야 하나요? 

    #25764

    codingapple
    키 마스터

    class A { test = function(){ console.log(1) } }
    var instance = new A();
    var {test} = instance;

    이렇게 만들면 가능하긴합니다

    변수함수선언없이 class 안에 넣는 것들은 public 필드라고 부릅니다 

    #25859

    frysweet
    참가자

    인스턴스1의 클래스 A에 함수가' 표현식'이 아닌, '선언식' 으로,
    set '함수이름1' () { ... };
    get '함수이름1'() { ...  }; 
    => 형식으로 선언되어 있는데요.

    이럴때는 다른 모듈파일 B 에서 const { '함수이름1' } = 인스턴스1; 식으로 할당해서 사용할때,
    const { '함수이름' } 은 인스턴스1 자체가 할당되는걸까요?

    이해가 어려운점이 인스턴스 1에 선언되어 있는 다른 메소드들은 인스턴스1.'메소드이름' 식으로 꺼내서 쓰고 있는데,
    저부분만 인스턴스1의 특정 함수이름과 동일한 변수이름을 const { '함수이름1' } 식으로 할당해서 사용하고 있어요.

     

    여기서 this.Editor.BlockManager 가 클래스 A를 생성자로 만든 인스턴스 이구요.


     

    ------------------------------------------------------------------------------------------------------------------------------

     

    이 부분이 'this.Editor.BlockManager' 모듈의 'get / set' 함수인데
    '다른 모듈'에서 'this.Editor.BlockManager'를 할당받는 변수 'const { currentBlock }' 과 동일한 이름입니다.

     

    #25862

    codingapple
    키 마스터

    타입스크립트에선 public 키워드 왼쪽에 붙이면 public 필드가 됩니다 

    그럼 instance 만들 때 추가될텐데 destructuring도 가능하겠군요 

    #25875

    frysweet
    참가자

    ㅇㅎ 이해했습니다!  감사합니다 🙂

    #25878

    frysweet
    참가자

    그럼 public set / get 함수 둘다 하나의 같은 변수에 할당 되는 것이 맞나요? 

10 글 보임 - 1 에서 10 까지 (총 12 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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