JS
get/set
gurwhddl
2022. 10. 2. 15:40
let 사람 = {
name : 'suzy';
age : 30;
}
여기서 age를 뽑고싶으면 사람.age 하면되지만 요즘 트렌드는 사람 이라는 오브젝트에 출력 함수를 따로 만들어서 뽑는편이라함.
let 사람 = {
name : 'suzy';
age : 30;
내년나이( ){
return this.age + 1
나이변경(변경할나이){
this.age = 변경할나이
}
쓰면 좋은이유
1. object 자료가 매우 복잡할 때
사람.age + 1
사람.내년나이( ) // 이 둘은 같은 값이지만 자료가 복잡해지면 사람.age같이 점 한번으로 들어가기가 어려운 경우가 생김. 이때 유용
2. 데이터 업데이트 할때 편함 (데이터 수정시 미리 거를 수 있음)
- 이것도 마찬가지로
사람.age = 변경할나이 해줘도 똑같지만
가끔 숫자를 문자열로 입력한다거나 음수가 입력된다거나 이럴때가 있음.
이럴때 함수니까 if로 조건을 건다거나 parseInt같은걸로 실수 방지도 가능
parseInt('123123') - 123123
set / get 키워드 - 소괄호 안써도 작동 가능하게해줌
보통 set은 데이터 변경하는 함수 - 파라미터가 딱 1개 있어야함
get은 데이터 꺼내쓰는 함수에 사용 - return 있어야함
get 내년나이( ){
return this.age + 1
}
set 나이변경(변경할나이){
this.age = 변경할나이
}
원래는 사람.내년나이 ( ) / 사람.나이변경(30) 이렇게 해줘야됐던걸 저 키워드를 통해
사람.내년나이
사람.나이변경 = 30 이렇게만 해줘도 똑같이 변경됨
저걸 붙이면 이제 function이 아님. ( ) 붙이면 not a function 오류남
그냥 저기있는 name, age와 동일하게 사용할 수 있다고 생각하면됨
저거 붙어있으면 소괄호 쓰지말기!!!!!
class에서 사용하는 get/set
class 사람만들기 {
constructor(이름,나이) {
this.name = '이름';
this.age = '나이'
}
get 내년나이(){
return this.age + 1;
}
set 나이바꾸기(변경할나이){
if (변경할나이 < 0) {alert('must positive')}
else this.age = parseInt(변경할나이);
}
}
let 사람1 = new 사람만들기()
여기서 주의할점은 저 constructor 안에 직접적으로는 못씀. 전에 배웠던 밑 중괄호, 즉 prototype으로 주는 자리에 써야 적용가능.
쓸때는 사람1.나이바꾸기 = 변경할나이 해주면됨
만약에 사람1.나이바꾸기 = -1 하면 설정한대로 alert가 뜸
진짜 책에서 볼때는 저게 뭔소린가 싶었는데 좀 이해가 가긴 하는듯...