- ๋ฐ์ดํฐ ๊ตฌ์กฐ : ๋ ์ฝ๋ ์บก์ํํ๊ธฐ / ์ปฌ๋ ์ ์บก์ํํ๊ธฐ / ๊ธฐ๋ณธํ์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ธฐ
- ๋ฆฌํฉํฐ๋ง ์ ์์ ๋ณ์ : ์์ ๋ณ์๋ฅผ ์ง์ ํจ์๋ก ๋ฐ๊พธ๊ธฐ
์ฌ๋ฌ ํจ์๋ฅผ ํด๋์ค๋ก ๋ฌถ๊ธฐ / ํด๋์ค ์ถ์ถํ๊ธฐ / ํด๋์ค ์ธ๋ผ์ธํ๊ธฐ
์์ ์จ๊ธฐ๊ธฐ / ์ค๊ฐ์ ์ ๊ฑฐํ๊ธฐ
- ํจ์ ์บก์ํ : ํจ์ ์ถ์ถํ๊ธฐ -> ์๊ณ ๋ฆฌ์ฆ ๊ต์ฒดํ๊ธฐ
1) ํ๋ ์ด๋ฆ ๋ ธ์ถ
2) ํ๋๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ์จ๊ฒจ์ ๋ด๊ฐ ์ํ๋ ์ด๋ฆ์ ์ธ ์ ์๋ ํํ
: ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํด์, ๋งต, ํด์๋งต, ๋์ ๋๋ฆฌ, ์ฐ๊ด ๋ฐฐ์ด
ํด์๋งต - ํ๋๋ฅผ ๋ช ํํ ์๋ ค์ฃผ์ง ์๋๋ค.
๋ฒ์๋ฅผ ์์ ๋ ํน์ ์์ ๊ธธ์ด ์ค ์ด๋ค ๋ฐฉ์์ผ๋ก ํํํ๋์ง ์์๋ด๋ ์ ์ผํ ๊ธธ์ ํด์๋งต์ ์์ฑํ๊ณ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์ง์ ํ์ธํ๋ ๋ฐฉ๋ฒ. ํด์๋งต์ ์์ฑํ๊ณ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์ง์ ํ์ธํ๋ ๋ฐฉ๋ฒ ๋ฟ์ด๋ค.
=>๋ ์ฝ๋ ๋์ ํด๋์ค๋ฅผ ์ฌ์ฉ
์ค์ฒฉ๋ ๋ฆฌ์คํธ๋ ํด์๋งต์ ์ง๋ ฌํํ๋ ๊ฒฝ์ฐ.
1. ๋ ์ฝ๋๋ฅผ ๋ด์ ๋ณ์๋ฅผ ์บก์ํํ๋ค.
2. ๋ ์ฝ๋๋ฅผ ๊ฐ์ผ ๋จ์ํ ํด๋์ค๋ก ํด๋น ๋ณ์์ ๋ด์ฉ์ ๊ต์ฒดํ๋ค. ์ด ํด๋์ค์ ์๋ณธ ๋ ์ฝ๋๋ฅผ ๋ฐํํ๋ ์ ๊ทผ์๋ ์ ์ํ๊ณ , ๋ณ์๋ฅผ ์บก์ํํ๋ ํจ์๋ค์ด ์ด ์ ๊ทผ์๋ฅผ ์ฌ์ฉํ๋๋ก ์์ ํ๋ค.
3. ํ ์คํธํ๋ค.
4. ์๋ณธ ๋ ์ฝ๋ ๋์ ์๋ก ์ ์ํ ํด๋์ค ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ํจ์๋ค์ ์๋ก ๋ง๋ ๋ค.
5. ๋ ์ฝ๋๋ฅผ ๋ฐํํ๋ ์์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ 4์์ ๋ง๋ ์ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ก ๋ฐ๊พผ๋ค. ํ๋์ ์ ๊ทผํ ๋๋ ๊ฐ์ฒด์ ์ ๊ทผ์๋ฅผ ์ฌ์ฉํ๋ค. ์ ์ ํ ์ ๊ทผ์๊ฐ ์๋ค๋ฉด ์ถ๊ฐํ๋ค. ํ ๋ถ๋ถ์ ๋ฐ๊ฟ ๋๋ง๋ค ํ ์คํธํ๋ค.
-> ์ค์ฒฉ๋ ๊ตฌ์กฐ์ฒ๋ผ ๋ณต์กํ ๋ ์ฝ๋๋ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๋ ํด๋ผ์ด์ธํธ๋ค์ ์ฃผ์ํด์ ์ดํด๋ณธ๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ํ๋ค๋ฉด ๋ฐ์ดํฐ์ ๋ณต์ ๋ณธ์ด๋ ์ฝ๊ธฐ์ ์ฉ ํ๋ฝ์๋ฅผ ๋ฐํํ ์ง ๊ณ ๋ คํด๋ณด์.
6. ํด๋์ค์์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ์ ๊ทผ์์ ์๋ณธ ๋ ์ฝ๋๋ฅผ ๋ฐํํ๋ ํจ์๋ค์ ์ ๊ฑฐํ๋ค.
7. ํ ์คํธํ๋ค.
8. ๋ ์ฝ๋์ ํ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ธ ์ค์ฒฉ ๊ตฌ์กฐ๋ผ๋ฉด ๋ ์ฝ๋ ์บก์ํ๊ธฐ์ ์ปฌ๋ ์ ์บก์ํํ๊ธฐ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ ์ฉํ๋ค.
name, country์ ์ ๊ทผ/์์ ํ๊ธฐ ์ํด์ getter, setter์ ์ด์ฉํ๊ฒ ํ๋ค.
// ๋ ์ฝ๋ ์บก์ํ ์
const organization = {name : "abcmart", country : "kor"}
result +=`<h1>${organization.name}</h1>`;
// 1) ๋ณ์ ์บก์ํ
function getRawDataOrganization(){return organization;}
result +=`<h1>${getRawDataOrganization().name}</h1>`;
getRawDataOrganization().name = newName;
// 2) ํด๋์คํ
class Organization {
constructor(data){
this._name = data.name;
this._country = data.country;
}
set name(aString){this._name = aString;}
get name(){return this._name;}
get country(){return this._country;}
set country(aCountryCode){this._country = aCountryCode;}
}
const organization = new Organization({name : "abcmart", country : "kor"})
// ์ ๊ฑฐ) function getRawDataOrganization(){return organization._data;}
function getOrganization(){return organization;}
usages๋ฅผ ์์ ํ๋ ํจ์(setUsage), usage๋ฅผ ๋น๊ตํ๋ ํจ์(compareUsage)๋ฅผ ์บก์ํ ๊ด์ ์์ ์ฒ๋ฆฌํ๊ธฐ
"1920":{ //customerId
name : "๋งํด ํ์ธ๋ฌ",
id : "1920",
usages : {
"2016" : {
"1" : 50,
"2" : 55,
},
"2015" : {
"1" : 70,
"2" : 63,
},
}
},
"38673":{
name : "๋ ํฌ๋",
id : "38673"
...
}
class CustomerData {
constructor(data){
this._data = data;
}
}
function getCustomerData(){return customerData;}
function getRawDataOfCustomers(){return customerData._data;}
function setRawDataOfCustomers(arg){customerData = new CustomerData(arg);}
setUsage(customerID, year, month, amount);
| 7.3. ๊ธฐ๋ณธํ์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ธฐ | 7.4. ์์ ๋ณ์๋ฅผ ์ง์ ํจ์๋ก ๋ฐ๊พธ๊ธฐ (0) | 2021.10.05 |
|---|---|
| 7.2. ์ปฌ๋ ์ ์บก์ํํ๊ธฐ (0) | 2021.10.05 |
| 6.11. ๋จ๊ณ ์ชผ๊ฐ๊ธฐ (Split Phase) (0) | 2021.09.26 |
| 6.10. ์ฌ๋ฌ ํจ์๋ฅผ ๋ณํ ํจ์๋ก ๋ฌถ๊ธฐ (0) | 2021.09.26 |
| 6.9. ์ฌ๋ฌ ํจ์๋ฅผ ํด๋์ค๋ก ๋ฌถ๊ธฐ (0) | 2021.09.26 |