원래 처음에 객체 만들때 어떻게함?
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);
}
}
'자바스크립트' 카테고리의 다른 글
자바스크립트 문법정리 8 [ promise ] (0) | 2022.05.22 |
---|---|
자바스크립트 문법정리 7 [구조 분해 할당 (Destructuring) ] (0) | 2022.05.22 |
자바스크립트 문법정리 5 [constructor ] (0) | 2022.05.22 |
자바스크립트 문법정리 4 [rest, spread] (0) | 2022.05.22 |
자바스크립트 문법정리 3 [변수 ,Reference Data Type ] (0) | 2022.05.22 |