6.6. ๋ณ์ ์บก์ํํ๊ธฐ (Encapsulate Variable)
: ๊ทธ ๋ฐ์ดํฐ๋ก์ ์ ๊ทผ์ ๋ ์ ํ๋ ํจ์๋ฅผ ๋ง๋๋ ์์ผ๋ก ์บก์ํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ
: ๊ฐ์ฒด ์งํฅ์์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ private๋ก ์ ์งํด์ผ ํ๋ค๊ณ ๊ฐ์กฐํ๋ ์ด์
= ๋ฐ์ดํฐ ๋ณ๊ฒฝ ํต๋ก๊ฐ ์ ํด์ง๊ฒ ๋จ. ์ค๋ฅ ์ฐพ๊ธฐ ์ฌ์
1. ๋ณ์๋ก์ ์ ๊ทผ๊ณผ ๊ฐฑ์ ์ ์ ๋ดํ๋ ์บก์ํ ํจ์๋ค์ ๋ง๋ ๋ค.
2. ์ ์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ค.
3. ๋ณ์๋ฅผ ์ง์ ์ฐธ์กฐํ๋ ๋ถ๋ถ์ ๋ชจ๋ ์ ์ ํ ์บก์ํ ํจ์ ํธ์ถ๋ก ๋ฐ๊พผ๋ค. ํ๋์ฉ ๋ฐ๊ฟ ๋๋ง๋ค ํ ์คํธํ๋ค.
4. ๋ณ์์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ ํํ๋ค.
-> ๋ณ์๋ก์ ์ง์ ์ ๊ทผ์ ๋ง์ ์ ์์ ๋๋ ์๋ค. ๊ทธ๋ด ๋๋ ๋ณ์ ์ด๋ฆ์ ๋ฐ๊ฟ์ ํ ์คํธํด๋ณด๋ฉด ํด๋น ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ๊ณณ์ ์ฝ๊ฒ ์ฐพ์๋ผ ์ ์๋ค. // ๋ฌด์จ ๋ง์ผ๊น
5. ํ ์คํธํ๋ค.
6. ๋ณ์ ๊ฐ์ด ๋ ์ฝ๋๋ผ๋ฉด ๋ ์ฝ๋ ์บก์ํํ๊ธฐ๋ฅผ ์ ์ฉํ ์ง ๊ณ ๋ คํด๋ณธ๋ค.
์ ์ญ ๋ณ์์ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ ์๋ค
// ๋ณ๊ฒฝ ์ด์
let defaultOwner = {firstName: "๋งํด", lastName: "ํ์ธ๋ฌ"};
// ์ฐธ์กฐ
spaceship.owner = defaultOwner;
// ๊ฐฑ์
defaultOwner = {firstName :"๋ ๋ฒ ์นด", lastName:"ํ์จ์ค"};
getter, setter ์์ฑ & ์ ๊ทผ์๋ง ๋ ธ์ถ์ํค๊ธฐ
// 1) getter, setter ์์ฑ
function getDefaultOwner(){
return defaultOwner;
}
function setDefaultOwner(arg){
defaultOwner = arg;
}
// 2) getter, setter๋ก ๋ณ๊ฒฝ ์ด์ ์ฝ๋๋ฅผ ๋ฐ๊พผ๋ค.
spaceship.owner = getDefaultOwner();
setDefaultOwner({firstName:"๋ ๋ฒ ์นด",lastName:"ํ์จ์ค"});
// 3) ์ ๊ทผ์๋ง ๋
ธ์ถ ์ํค๊ธฐ
let defaultOwner = {firstName: "๋งํด", lastName: "ํ์ธ๋ฌ"};
export function getDefaultOwner(){
return defaultOwner;
}
export function setDefaultOwner(arg){
defaultOwner = arg;
}
> ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฒํฐ์ ์ธํฐ์ ์ด๋ฆ์ ๋๊ฐ์ด ์ง๊ณ ์ธ์ ์ฌ๋ถ์ ๋ฐ๋ผ ๊ตฌ๋ถํ๋ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๋ค. (get,set)
1. ๊ฒํฐ๋ก ๊ฐ์ ๋ฐํํ ๋, ๋ฐ์ดํฐ์ ๋ณต์ ๋ณธ์ ๋ฐํํ๋๋ก ํ๋ค.
let defaultOwnerData = {firstName: "๋งํด", lastName: "ํ์ธ๋ฌ"};
export function defaultOwner(){
return Object.assign({},defaultOwnerData);
}
export function setDefaultOwner(arg){
defaultOwnerData = arg;
}
>
์๋ณธ์ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ์ํ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ค๋ฉด...?
2. ๋ ์ฝ๋ ์บก์ํํ๊ธฐ
> ์๋ณธ์ผ๋ก์ ๋งํฌ๋ฅผ ์ ์งํด์ผ ํ ๋
let defaultOwnerData = {firstName: "๋งํด", lastName: "ํ์ธ๋ฌ"};
export function defaultOwner(){
return new Person(defaultOwnerData);
}
export function setDefaultOwner(arg){
defaultOwnerData = arg;
}
class Person {
constructor(data){
this._lastName = data.lastName;
this._lastName = data.firstName;
}
get lastName() {return this._lastName;}
get firstName() {return this._firstName;}
}
์ ๋ฐฉ๋ฒ ๋ชจ๋ ๊น์ด๊ฐ 1์ผ ๋๋ง ๊ฐ๋ฅํ๋ค
| 6.9. ์ฌ๋ฌ ํจ์๋ฅผ ํด๋์ค๋ก ๋ฌถ๊ธฐ (0) | 2021.09.26 |
|---|---|
| 6.8. ๋งค๊ฐ๋ณ์ ๊ฐ์ฒด ๋ง๋ค๊ธฐ (Introduce Parameter Object) (0) | 2021.09.26 |
| 6.3. ๋ณ์ ์ถ์ถํ๊ธฐ (0) | 2021.09.26 |
| 6.1. ํจ์ ์ถ์ถํ๊ธฐ (0) | 2021.09.26 |
| 9.2. ํ๋ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ (Rename Field) (0) | 2021.09.25 |