Open utterances-bot opened 5 years ago
안녕하세요! 벨로퍼트님
JavaScript의 Function 과 Method에 대해 명확히 구분해서 언급하는게 좋지 않을까 싶습니다
Method도 Function 로 명시해서 설명하는 부분이 많이 나와 댓글 달아봅니다
@devJang
좋은 의견 감사합니다 😀 추후 반영하도록 하겠습니다!
제가 자바스크립트 생초보인데 그래서 그런지 getter함수와 setter함수 개념정리가 잘 안되네요ㅠ 왜 저 함수가 필요한지, 어떨때 써야하는지 강의를 3번 돌려보고 구글링해도 잘 모르겠어요..ㅎㅎ특정값을 조회하고 바꿀때 쓸 수 있는 다른 함수들도 많은데 굳이 저 함수들이 존재하는 이유같은.. 그런거요 ㅎㅇ
안녕하세요 .강의 잘 듣고있습니다.
혹시 getter함수와 setter함수가 예를들어 어떤 역할을 하는지 등 간단한 ㅠ개념에 대해 설명부탁드려도될까요?
다들 느끼고 있는 점이 비슷하네요. 저 역시도 궁금해서 적어봅니다. a(value){ this._a = 5; this.calculate(); } 이 함수와 set a(value){ this._a = 5; this.calculate(); } 이 함수는 부를때 numbers.a(5)로 부르느냐(일반적인 함수) numbers.a = 5로 부르느냐(setter) 차이인 것 같은데,
자바의 경우는 변수가 private로 선언을 해 캡슐화를 위해서 getter/setter를 두고 그 메소드를 통해서만 변수에 접근할 수 있도록 만드는데,
여기선 왜 getter, setter를 사용하는지 아예 말씀조차 없고, 그냥 getter랑 setter가 있는데 이렇게 쓰는거에요~만 하고 끝나는 느낌이라 아쉽네요.
강의보다가 이해가 안 가서 혹시라도 질문 드릴데가 있나 해서 와봤더니 다들 비슷한 댓글을 달아 놓으셨군요..
const numbers = { _a: 1, _b: 2, sum: 3, calculate(){ console.log('calculate'); this.sum = this._a + this._b; }, a(value){ this._a = value; this.calculate(); }, set b(value){ this._b = value; this.calculate(); } };
console.log(numbers.sum); numbers.a(5); console.log(numbers.sum); numbers.b = 5; console.log(numbers.sum); console.log(numbers.sum);
추가적으로 코드 달아봅니다.
set을 사용한 b와 set을 사용하지 않은 일반함수 a의 차이점이 numbers.a(5) 처럼 =를 사용하지 않는 일반함수 a와 numbers.b = 5 처럼 =를 사용하는 setter함수 b인데, 이게 왜 이렇게 차이가 나도록 만들었으며, 왜 쓰이는 건지 명확한 설명이 없는것 같습니다.
나중에 다시 한번 시간날때 찾아오겠습니다. 부디 답글이 달려있길 바라며..
https://mygumi.tistory.com/161 다른분들 참고하세요. 이거 읽으니 좀 알 것 같네요. _name을 가리기 위해서 객체.setter함수를 쓰면, 확실히 변수이름을 모르게 만들 수 있으니 은닉은 되겠네요.
여기서부터 슬슬 어려워 지는군요 ..
조회할때마다 계산하지 않고, 값의 변화에 따라 계산값을 기억해두고 조회하면 바로 값을 받을 수 있도록 사용한다. 정도로 이해하면 될까요 .. ?
getter, setter를 단순히 값 저장용이라고 생각하기보다는 캡슐화, 정보은닉 관점에서 이해하는 것이 바람직하다고 봅니다. 자바스크립트에서의 getter, setter 관련하여 유용하게 본 동영상 링크를 올립니다. https://www.youtube.com/watch?v=bl98dm7vJt0 영상 보고 공부한 내용은 블로그에 게재해두었습니다. https://humahumahuma.tistory.com/68 공부에 참고가 되면 좋겠습니다.
Getter, Setter 내용 코드에서
console.log(numbers.sum); numbers.a = 5; numbers.b = 7; numbers.a = 9; console.log(numbers.sum); console.log(numbers.sum); console.log(numbers.sum); 이 부분 왜 sum을 연속해서 출력하는지 알 수 있을까요? console.log(numbers.a); console.log(numbers.b); console.log(numbers.sum); 인가요?
getter : 특정 값을 조회 할 때 마다 함수를 호출 setter : 특정 값을 설정 할 때 마다 값(파라미터)를 설정, 특정 값을 설정 할 수 있다
명확하게 설명은 안되지만, 함수와 값을 설정하는 차이로 구분하면 될까요? getter / setter 함수가 왜 활용되는지 어떨때 명확하게 구분지어 비교되어 활용되는지에 대한 설명이 추가로 있어야 할 것으로 판단되네요.
벨로퍼트님 항상 강의 잘 듣고 있습니다 다른 분들이 게터/세터 개념을 혼동하시는거 같길래 문제를 풀어보았는데요
const numbers = { _a: 1, _b: 2, sum: 3, calculate() { console.log('calculate'); this.sum = this._a + this._b; }, get a() { return this._a; }, get b() { return this._b; }, set a(value) { console.log('a가 바뀝니다.'); this._a = value; this.calculate(); }, set b(value) { console.log('b가 바뀝니다.'); this._b = value; this.calculate(); } };
console.log(numbers.sum); // 3 numbers.a = 5; // a 변수에 파라미터 값이 5가 들어가면서 (1) console.log 가 실행, (2) const numbers(this) 에 기존에 _a = 1인 값을 5로 set, (3) calculate() 함수 실행 console.log(numbers.sum); // a: 5 + b: 2 = 7 numbers.b = 7; // b 변수에 파라미터 값이 7이 들어가면서 (1) console.log 가 실행, (2) const numbers(this) 에 기존에 _b = 2인 값을 7로 set, (3) calculate() 함수 실행 console.log(numbers.sum); // a: 5 + b: 7 = 12 numbers.a = 9; // a 변수에 파라미터 값이 9가 들어가면서 (1) console.log 가 실행, (2) const numbers(this) 에 앞서 들어간 _a = 5 를 9로 set, (3) calculate() 함수 실행 console.log(numbers.sum); // a: 9 + b: 7 = 16
이렇게 하시면 될 거 같아서 의견 남깁니다
const dog = { name: "멍멍이", sound: "멍멍", say: function say() { console.log(this.sound) } } 에서 const dog 부분이 에러라고 뜹니다 dog is assigned a value but never used (no-unused-vars)이라고 뜨는데 무슨 문제일까요?
@ljh9716
dog.say(); 를 안치신 것 같아요 !
우리는 numbers.sum() 을 한 것이 아니라 number.sum 을 조회했을 뿐인데, 함수가 실행되고 그 결과값이 출력되었습니다. numbers.sum의 s가 빠졌습니다
//우리는 numbers.sum() 을 한 것이 아니라 number.sum 을 조회했을 뿐인데, 함수가 실행되고 그 결과값이 출력되었습니다.//
이 문장을 조금더 풀이를 해서 알려 주었음 합니다. 함수()호출 이랑 호출을 안썼을때 차이점이요!
안녕하세요 벨로퍼트님 강의 잘듣고 있습니다! const numbers = { _a: 1, _b: 2, sum: 3, calculate() { console.log('calculate'); this.sum = this._a + this._b; }, get a() { return this._a; }, get b() { return this._b; }, set a(value) { console.log('a가 바뀝니다.'); this._a = value; this.calculate(); }, set b(value) { console.log('b가 바뀝니다.'); this._b = value; this.calculate(); } };
console.log(numbers.sum); numbers.a = 5; numbers.b = 7; numbers.a = 9; console.log(numbers.sum); console.log(numbers.sum); console.log(numbers.sum)
에서
get a() { return this._a; }, get b() { return this._b; } 부분이 없어도 결과가 똑같이 나오는데 get함수를 넣는 이유가 있나요?
음.. 다들 setter, getter가 왜 필요한지 왜 사용하는지 궁금해 하시는 것 같은데 객체지향 프로그래밍에 대한 개념이 잡히시지 않으셔서 그럴겁니다 나중에 객체지향 언어들 (C++, 자바 등)을 배우실 때 왜 필요한 지 알게 되실거에요
왜 getter setter가 필요한지, 이 부분에 대한 자세한 설명이 더 있다면 좋았을것 같네요.
윗분은 객체지향 프로그래밍 개념이 잡히지 않은 분들이 comment를 했다고 남기셨는데, 다수의 분들이 getter setter에 대한 추가적인 설명을 요청드렸으나 벨로퍼트님의 피드백이 없던게 문제가 아닐까 싶습니다. 벨로퍼트님의 능력이면 충분히 해주셨을 수 있으셨을거라고 생각하는데요ㅠㅠ...
다른분들이 올려주신 링크로 getter setter에 대해서 좀 더 많은 공부하고 갑니다^^ 감사합니다!
22.03.22
22.03.23
22.08.14
22.08.19
22.10.20
_a랑 a랑 혼재돼있어서 헷갈려요
230308
23.09.01.
231021
231115
240620
06. 객체 · GitBook
https://learnjs.vlpt.us/basics/06-object.html