제네레이터 (generator)
포스트
취소

제네레이터 (generator)

Generator란?

  • 0개 또는 1개의 값을 반환하는 일반적인 함수와 다르게
    여러 개의 값을 필요에 따라 반환할수 있는 함수 선언 방식
  • 사용 예시
    function* testGenerator(){  //function 예약어 뒤에 *(아스타리스크)를 붙인다.
        yield "test1";  //yield를 통해 반환한다. 일반적인 함수의 return과 동일
        yield "test2";
        yield "test3";
    }

    const resultTest = testGenerator();
    resultTest.next();  //출력 : {value: "test1", done: false}
    resultTest.next();  //출력 : {value: "test2", done: false}
    resultTest.next();  //출력 : {value: "test3", done: false}
    resultTest.next();  //출력 : {value: undefined, done: true} //반환받은 모든 리턴 값들을 모두 소모함
    

프록시(Proxy)란?

  • 사용하는 필터 객체에 따라 대상 객체에서 값을 설정하거나 가져오는 함수를 실행하게하는 객체
  • 사용 예시
    const testUser = {
        name : "who",
        age : 25 
    };

    const userFilter = {
        get : (target, property, receiver) => {
            console.log("execute get filter");  //객체의 값을 가져올시 실행
            console.log("target :", target);    //대상이 되는 객체 자체를 나타냄
            console.log("property :", property);  //불러지는 항목의 이름을 반환
            console.log("receiver :", receiver);  //receiver 객체 반환
            console.log("불러온 값 :", target[property]);  //실제 값 반환
        },
        set : () => {
            console.log("execute set filter");  //객체의 값을 설정시 실행
        }
    };

    const filterTestUser = new Proxy(testUser, userFilter); //new Proxy(대상 객체, 필터 객체);

    console.log(filterTestUser.name); //출력 : execute get filter

    filterTestUser.address = "where"; //출력 : execute set filter

    console.log(filterTestUser);  //출력 : Proxy {name: "who", age: 25}
    
  • 특징
    • Proxy를 사용하면 객체에 대한 값을 가져오거나 설정하는 것같은 행동들에 제약을 줄 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.