제네레이터 (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 라이센스를 따릅니다.