javascript getter, setter

jangdu·2023년 3월 27일
0

javascript

목록 보기
10/16

getter, setter는 object내의 함수들을 괄호없이 쓸 수 있게 만들어주는 키워드인데,
데이터의 무결성을 보존하기 위해 쓰는 키워드이다.

원본데이터는 항상 무결성을 보존 해야한다는게 국룰인데,
데이터를 수정, 출력 시 직접 원본 데이터를 만지는게 아닌 함수로 간접적으로 다뤄야하는 느낌으로 개발을 하는게 더 요즘느낌임

함수로 object 데이터를 꺼내는 법

object 데이터를 만들고, 나이를 1년 후에 출력한다면?
함수를 이용해서 사용하자

var Person = {
  name : 'kim',
  age : 30,
  nextAge() {
    return this.age + 1
  }
}

이런식으로 함수를 만들어 쓰면,
Person.nextAge()로 썼을 때 31이 출력된다.

이렇게해야만 object안의 데이터를 원본 상태로 둘수있다.
즉, 무결성을 보존할 수 있다!

그러면 장점이 더 많지만 일단은
1. object안의 데이터가 복잡할 수록 저렇게 해야 꺼내기 쉽다.
2. 내부의 변수를 건드리지않아 실수 방지가 된다.

함수로 데이터 수정

var Person = {
  name : 'kim',
  age : 30,
  setAge(나이){
    this.age = 나이
  }
}

setAge라는 함수를 object내에 추가했다.
이 함수는 파라미터를 한개 입력하면,
그 파라미터를 그대로 this.age에 집어넣는 역할을 한다.
이제 Person.setAge(40)이러면 자유롭게 나이 변경이 됨.

저 object안의 내용이 복잡하면 저렇게 쓰는게 오히려 좋음

get, set키워드

함수를 만들면 setAge(40)이런식으로 쓰다보면 좀 복잡해지는데 (암튼 복잡해짐)
그러면 get/set키워드를 함수 옆에 추가하면 된다.

var Person = {
  name : 'kim',
  age : 30,
  set setAge(나이){
    this.age = parseInt(나이)
  }
}
Person.setAge = 40;	

이런식으로 set이라는 키워드를 추가하면
Person.setAge(40)이거말고
Person.setAge = 40;이거로 쓸 수 있음
즉, 등호로 데이터를 입력할 수 있다.
직관적으로 보기 쉬워서 이렇게 많이 사용한다.

set붙은 함수를 저런거 setter라고 부름 ㅇㅇ

var Person = {
  name : 'kim',
  age : 30,
  get nextAge(){
    return = this.age + 1
  }
}
console.log(Person.nextAge)

get키워드는 이런식으로 사용한다.
그러면 소괄호없이도 nextAge를 사용해 데이터를 꺼낼 수 있다.

그냥 데이터를 뽑거나 가져와줄 때는 get
데이터를 입력하거나 수정할 땐 set
규칙으로는
set함수에는 데이터를 입력해 수정해야해서 파라미터가 존재해야하고
get은 파라미터가 있으면 안되고 return을 가져야함

class에서 사용하는 get/set

class안에서 함수를 만들때도 사용가능

class Person {
  constructor() {
    this.name = 'Park';
    this.age = 20;
  }
  get nextAge() {
    return this.age + 1;
  }
  set setAge(age){
    this.age = age;
  }
}
var user1 = new Person();

class안의 함수들은 getter/setter로 만들때 이렇게하면 된다.
새로 나오는 object는
user1.nextAge;
user1.setAge = 50;
이렇게 사용할 수 있다.

profile
대충적음 전부 나만 볼래

0개의 댓글