JS Getter Setter
[Private Modifier](https://texonom.com/private-modifier-af1fcd4366374ba7a1441bf6d4d1e7e6) 


## Why
- prevent set
- dynamic property
- Using context directly

### Instead of reactive data
```typelet userWrapper = {	user: {   name: "John",   surname: "Smith",	 get fullName() {     return `${this.name} ${this.surname}`   }	},	get descent() {     return `${this.user.name} ${this.user.surname}`   }}```

### [JS Proxy](https://texonom.com/js-proxy-bec6f76f2e61473da8102722110bafbf)  & Promise can make await property
```typeasync function parseValue() {  await new Promise(resolve => setImmediate(resolve));  return "parsed value"}let proxy = new Proxy(myObject, {  get(target, prop, receiver) {    if (prop === "attribute") {      let newProp = prop + "_parsed"      if (!(newProp in target)) {        target[newProp] = parseValue()      }      return target[newProp]    } else {      return Reflect.get(target, prop, receiver)    }  },})await proxy.attribute```



> [JavaScript proxy return async value on "get"](https://stackoverflow.com/questions/64372696/javascript-proxy-return-async-value-on-get)

> [프로퍼티 getter와 setter](https://ko.javascript.info/property-accessors)





