Comments (26)
안녕하세요 .강의 잘 듣고있습니다.
혹시 getter함수와 setter함수가 예를들어 어떤 역할을 하는지 등 간단한 ㅠ개념에 대해 설명부탁드려도될까요?
from learnjs.
https://mygumi.tistory.com/161 다른분들 참고하세요.
이거 읽으니 좀 알 것 같네요. _name을 가리기 위해서 객체.setter함수를 쓰면,
확실히 변수이름을 모르게 만들 수 있으니 은닉은 되겠네요.
from learnjs.
getter, setter를 단순히 값 저장용이라고 생각하기보다는 캡슐화, 정보은닉 관점에서 이해하는 것이 바람직하다고 봅니다.
자바스크립트에서의 getter, setter 관련하여 유용하게 본 동영상 링크를 올립니다. https://www.youtube.com/watch?v=bl98dm7vJt0
영상 보고 공부한 내용은 블로그에 게재해두었습니다. https://humahumahuma.tistory.com/68 공부에 참고가 되면 좋겠습니다.
from learnjs.
getter : 특정 값을 조회 할 때 마다 함수를 호출
setter : 특정 값을 설정 할 때 마다 값(파라미터)를 설정, 특정 값을 설정 할 수 있다
명확하게 설명은 안되지만, 함수와 값을 설정하는 차이로 구분하면 될까요?
getter / setter 함수가 왜 활용되는지
어떨때 명확하게 구분지어 비교되어 활용되는지에 대한 설명이 추가로 있어야 할 것으로 판단되네요.
from learnjs.
안녕하세요! 벨로퍼트님
JavaScript의 Function 과 Method에 대해 명확히 구분해서 언급하는게 좋지 않을까 싶습니다
Method도 Function 로 명시해서 설명하는 부분이 많이 나와 댓글 달아봅니다
from learnjs.
좋은 의견 감사합니다
추후 반영하도록 하겠습니다!
from learnjs.
제가 자바스크립트 생초보인데 그래서 그런지 getter함수와 setter함수 개념정리가 잘 안되네요ㅠ 왜 저 함수가 필요한지, 어떨때 써야하는지 강의를 3번 돌려보고 구글링해도 잘 모르겠어요..ㅎㅎ특정값을 조회하고 바꿀때 쓸 수 있는 다른 함수들도 많은데 굳이 저 함수들이 존재하는 이유같은.. 그런거요 ㅎㅇ
from learnjs.
다들 느끼고 있는 점이 비슷하네요.
저 역시도 궁금해서 적어봅니다.
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가 있는데
이렇게 쓰는거에요~만 하고 끝나는 느낌이라 아쉽네요.
강의보다가 이해가 안 가서 혹시라도 질문 드릴데가 있나 해서 와봤더니 다들 비슷한 댓글을 달아 놓으셨군요..
from learnjs.
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인데,
이게 왜 이렇게 차이가 나도록 만들었으며, 왜 쓰이는 건지 명확한 설명이 없는것 같습니다.
나중에 다시 한번 시간날때 찾아오겠습니다.
부디 답글이 달려있길 바라며..
from learnjs.
여기서부터 슬슬 어려워 지는군요 ..
from learnjs.
조회할때마다 계산하지 않고, 값의 변화에 따라 계산값을 기억해두고
조회하면 바로 값을 받을 수 있도록 사용한다. 정도로 이해하면 될까요 .. ?
from learnjs.
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);
인가요?
from learnjs.
벨로퍼트님 항상 강의 잘 듣고 있습니다
다른 분들이 게터/세터 개념을 혼동하시는거 같길래 문제를 풀어보았는데요
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
이렇게 하시면 될 거 같아서 의견 남깁니다
from learnjs.
const dog = {
name: "멍멍이",
sound: "멍멍",
say: function say() {
console.log(this.sound)
}
}
에서 const dog 부분이 에러라고 뜹니다
dog is assigned a value but never used (no-unused-vars)이라고 뜨는데 무슨 문제일까요?
from learnjs.
@ljh9716
dog.say();
를 안치신 것 같아요 !
from learnjs.
우리는 numbers.sum() 을 한 것이 아니라 number.sum 을 조회했을 뿐인데, 함수가 실행되고 그 결과값이 출력되었습니다.
numbers.sum의 s가 빠졌습니다
from learnjs.
//우리는 numbers.sum() 을 한 것이 아니라 number.sum 을 조회했을 뿐인데, 함수가 실행되고 그 결과값이 출력되었습니다.//
이 문장을 조금더 풀이를 해서 알려 주었음 합니다.
함수()호출 이랑 호출을 안썼을때 차이점이요!
from learnjs.
안녕하세요 벨로퍼트님 강의 잘듣고 있습니다!
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함수를 넣는 이유가 있나요?
from learnjs.
음.. 다들 setter, getter가 왜 필요한지 왜 사용하는지 궁금해 하시는 것 같은데
객체지향 프로그래밍에 대한 개념이 잡히시지 않으셔서 그럴겁니다
나중에 객체지향 언어들 (C++, 자바 등)을 배우실 때 왜 필요한 지 알게 되실거에요
from learnjs.
왜 getter setter가 필요한지, 이 부분에 대한 자세한 설명이 더 있다면 좋았을것 같네요.
윗분은 객체지향 프로그래밍 개념이 잡히지 않은 분들이 comment를 했다고 남기셨는데, 다수의 분들이 getter setter에 대한 추가적인 설명을 요청드렸으나 벨로퍼트님의 피드백이 없던게 문제가 아닐까 싶습니다. 벨로퍼트님의 능력이면 충분히 해주셨을 수 있으셨을거라고 생각하는데요ㅠㅠ...
다른분들이 올려주신 링크로 getter setter에 대해서 좀 더 많은 공부하고 갑니다^^ 감사합니다!
from learnjs.
22.03.22
from learnjs.
22.03.23
from learnjs.
22.08.14
from learnjs.
22.08.19
from learnjs.
22.10.20
from learnjs.
_a랑 a랑 혼재돼있어서 헷갈려요
from learnjs.
Related Issues (20)
- 02. Truthy and Falsy · GitBook HOT 10
- 01. 카운터 · GitBook HOT 5
- 3장. 자바스크립트에서 비동기 처리 다루기 · GitBook HOT 3
- 02. async/await · GitBook HOT 14
- 01. Hello JavaScript · GitBook HOT 25
- 이 분 최소 루팡 HOT 2
- 05. 함수 · GitBook HOT 25
- 03. 단축 평가 논리 계산법 · GitBook HOT 7
- 1장. 자바스크립트 입문 · GitBook HOT 26
- 08. 반복문 · GitBook HOT 21
- 4장. HTML 과 JavaScript 연동하기 · GitBook HOT 3
- 2장. 알고있으면 유용한 자바스크립트 문법 · GitBook HOT 4
- 06. 비구조화 할당 (구조 분해) 문법 · GitBook HOT 5
- 07. 배열 · GitBook HOT 15
- 01. 삼항 연산자 · GitBook HOT 6
- Python 입문
- 04. 함수의 기본 파라미터 · GitBook HOT 1
- Computer Tutorial HOT 1
- 마무리 · GitBook HOT 3
- 02. 모달 · GitBook HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from learnjs.