JS (Java Script)

object 데이터 다룰때 함수 사용하기. (getter, setter)

GABOJOK 2023. 9. 7. 19:50

object 데이터를 다루는 함수 만드는 이유.. 

  • object 자료구조가 복잡할때 이득. 꺼내사용하기 좋다. 
  • obj 의 내부에 있는 변수들을 건드리지 않아 실수 방지 할수 있다. 
  • 자료 수정 혹은 자료를 다룰때 오류를 미리 방지하는 함수를 만들어 둘  수 있다.  

 

let 사람 = {
	name : 'park',
	age : 30,
	setAge(a){
		this.age = parseInt(a);
	}
}

사람.setAge(20);   
console.log(사람)  //{name: 'park', age: 20, setAge: ƒ}

 

 

사람.age = 20 으로 할수도 있지만, 데이터를 수정하기에 용이하지 않다. 

그래서 함수를 만들어서 속성값을 변경해 보자

 

함수로 속성값을 변경하면 실수들을 미리 방지하기에 용이하다. 

예를들어 숫자 20을 입력해야 하는데 문자 '20' 을 입력 한 경우,

자동으로 parseInt() 이용해서 정수로 바꾸어 주도록 해서 오류를 방지할 수 있다. 

 

    

getter, setter  왜 쓸까?

  • obj 의 함수를 호출시 복잡한 소괄호 없어도 됨.
  • 데이터를 다룰 때에 잘못된 부분 거르려고 사용
  • 보기 쉽고 직관적.(수정하는애, 가져오는애)

 

set

  • 데이터를 변경할 때 사용   (setter)
  • 파라미터가 꼭 1개 있어야 한다. 2개는 안됨.
  • 수정해 주는, 데이터를 입력해 주는 함수이기 때문.

get 

  • 데이터를 꺼내쓸 때  사용  (getter)
  • return이 있어야만 한다. 데이터를 꺼내기 때문. 가져오기 때문
  • 파라미터가 입력되면 안됨

 

함수 다루는게 더 편하다면 set, get 안써도 됨. 옵션 같은 느낌.

 

 

예시.

이미 있는  object 에 나이 라는 속성값을 추가하고, 그 나이가 1살 더 먹은 결과값을 도출하는 코드이다.

 

let 사람 = {
	name : 'park',
	age : 30,
    set setAge(a){
		this.age = parseInt(a);
    },get nextAge(){
		return this.age + 1;
    }
}
사람.setAge = 20;   
console.log(사람.nextAge) ;
console.log(사람); // {name: 'park', age: 20}   //age : 20  name : "park"   nextAge : 21

class 사람임 {
    constructor(){
        this.name = 'park';
        this.age = 30; 
    }get nextAges(){
        return this.age +1;
    }set setAges(s){
        this.age = parseInt(s)
    };
}

let m = new 사람임();
console.log(m.nextAges)  //get 한거 사용후 출력  31
m.setAges = '33'
console.log(m)  //사람임 {name: 'park', age: 33}  // age : 33   name : "park"  nextAges : 34