0개 또는 1개의 값을 반환하는 일반적인 함수와 다르게 여러 개의 값을 필요에 따라 반환할수 있는 함수 선언 방식
사용 예시
function*testGenerator(){//function 예약어 뒤에 *(아스타리스크)를 붙인다.yield"test1";//yield를 통해 반환한다. 일반적인 함수의 return과 동일yield"test2";yield"test3";}constresultTest=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)란?
사용하는 필터 객체에 따라 대상 객체에서 값을 설정하거나 가져오는 함수를 실행하게하는 객체
사용 예시
consttestUser={name:"who",age:25};constuserFilter={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");//객체의 값을 설정시 실행}};constfilterTestUser=newProxy(testUser,userFilter);//new Proxy(대상 객체, 필터 객체);console.log(filterTestUser.name);//출력 : execute get filterfilterTestUser.address="where";//출력 : execute set filterconsole.log(filterTestUser);//출력 : Proxy {name: "who", age: 25}
특징
Proxy를 사용하면 객체에 대한 값을 가져오거나 설정하는 것같은 행동들에 제약을 줄 수 있다.