원래 처음에 객체 만들때 어떻게함?

let 사람 = {
    name: 'park',
    age: 30,
    nextAge(){//내년 age 아는 방법 this ==사람 object
        return this.age +1;
    },
    setAge(나이){//나이수정하는 함수
        return this.age = parseInt(나이);
    }
}

사람.age;
사람.nextAge();//그냥 위에꺼에 +1하면 더하면되는데 왜만들었음?
//1.object 자료가 복잡할때 이득
//2.object 자료 수정시 편리,실수방지,관리가능 ex)데이터 수정시 미리 검사가능1.문자열을 입력했을수도있잖아요?
사람.setAge(20)//데이터 수정해주는 함수를 제작

이렇게 만듬

 

But 복잡한소괄호가 싫다면

let 사람2 = {
    name: 'park',
    age: 30,
    get nextAge(){//get함수들 특징 =>return 이 있어야함 데이터를 가져오는함수
        return this.age +1;
    },
    set setAge(나이){//set함수들 특징 =>파라미터가 1개 있어야함 데이터를 받아오기때문임
        this.age = parseInt(나이);
    }
}
사람.setAge='20'//안전
사람.nextAge;

get함수 특징 return이 꼭 있어야함

 

  • return type은 참조할 맴버변수의 자료형과 일치해야 한다.
  • 이름 앞에 get 을 붙이고 뒤에는 리턴할 맴버변수의 이름 혹은 해당 변수를 직관적으로 표현하는 단어가 와야한다.
  • ex) int getLength();

 

  set함수의 특징 파라미터가 1개이상있어야함

 

  • return type은 값의 설정 결과를 알려줄 수 있는 type이어야 한다.
  • argument는 수정할 맴버변수와 같은 type이어야 한다.
  • 이름 앞에 set을 붙이고 뒤에는 수정할 맴버변수의 이름 혹은 해당 변수를 직관적으로 표현하는 단어이어야 한다.

그래서 이거 왜쓰나요?

 

 재사용을 위한 캡슐화가 가능해진다는 것때문

 

 

Class에서 사용해보자

class 인간{
  constructor(){
    this.name='park';
    this.age=20;
  }
  get nextAge(){
      return this.age +1;
  }
  set setAge(나이)
  {this.age = 나이;//안전장치 부여완료

  }
}
let 인간1= new 인간();

데이터 출력/수정함수 만들어 쓰는이유?=>데이터의 무결성떄문입니다.

 

예제1

// 자바스크립트로 간단한 게임 기능을 가진 오브젝트를 뽑는 class를 만들고 싶습니다. 

// 다음 조건에 따라 class를 만들어보세요. class 이름은 Unit이라고 합시다.

// (1) 모든 Unit의 인스턴스는 공격력, 체력 속성이 있으며 기본 공격력은 5, 기본 체력은 100으로 설정되어 있어야 합니다.

// (2) 모든 Unit의 인스턴스는 전투력을 측정해주는 battlePoint라는 getter가 있습니다.

// console.log( 인스턴스.battlePoint ) 이렇게 사용하면 현재 공격력과 체력을 더한 값을 콘솔창에 출력해주어야합니다.

// (3) 모든 Unit의 인스턴스는 heal이라는 setter가 있습니다.

// 인스턴스.heal = 50 이렇게 사용하면 체력 속성이 50 증가해야합니다. 
class Unit{
    constructor(){
        this.공격력=5;
        this.체력=100;
    }
    get battlePoint(){
        return this.공격력 +this.체력
    }
    set heal(heal){
        this.체력=this. 체력 + heal;
    }
};

let 쎈애 = new Unit();

console.log(쎈애.battlePoint)
쎈애.heal= 50;

//

예제2

var data = {
    odd : [],
    even : []
  }
//(1) data 오브젝트에는 setter 역할 함수가 하나 필요합니다.

// setter 함수에 1,2,3,4 이렇게 아무 자연수나 파라미터로 입력하면 홀수는 odd, 짝수는 even 이라는 속성에 array 형태로 저장되어야합니다. 
var data = {
    odd : [],
    even: [],
   setter : function(...number){
       number.forEach((a)=>{
           if(a %2 ==1){
               this.odd.push(a);//홀수일때
           }else{
               this.even.push(a);//짝수일때
           }
       })
   }
};
data.setter(1,2,3)
//(2) data 오브젝트에는 getter 역할 함수가 하나 필요합니다.

//getter 함수를 사용하면 odd, even에 저장된 모든 데이터들이 숫자순으로 정렬되어 출력되어야합니다. 
var data = {
    odd : [],
    even : [],
    get getter(){
        return [...this.odd, ...this.even].sort((a,b)=> b -a);
    }
  }

 

 

복사했습니다!