์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์๋ฐ์คํฌ๋ฆฝํธ round
- ์๊ณ ๋ฆฌ์ฆ
- ๋ณ์ js
- ์๋ฐ์คํฌ๋ฆฝํธ for in
- ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ
- ์๋ฐ์คํฌ๋ฆฝํธ ceil
- reduce
- JS
- ์๋ฐ์คํฌ๋ฆฝํธ floor
- ์๋ฐ์คํฌ๋ฆฝํธ abs
- ํ๋ก๊ทธ๋๋จธ์ค js
- javascript
- ๋์์ธ ํจํด
- ์๋ฐ์คํฌ๋ฆฝํธ sqrt
- ํ๋ก๊ทธ๋๋จธ์ค ์น์์ด
- ํ๋ก๊ทธ๋๋จธ์ค ์๋ฐ์คํฌ๋ฆฝํธ
- ์๊ณ ๋ฆฌ์ฆ js
- ์๋ฐ์คํฌ๋ฆฝํธ pow
- programmers
- ์๋ฐ์คํฌ๋ฆฝํธ for of
- ์๋ฐ์คํฌ๋ฆฝํธ max
- ๋ฅ๋ค์ด๋ธ ๋ณ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค key
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ค๋จ๊ณํ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ ์ ๋น์ ์
- ์๋ฐ์คํฌ๋ฆฝํธ min
- ํ๋ก๊ทธ๋๋จธ์ค ์๋ฆฟ์ ๋ํ๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
eazyseon
16์ฅ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ ๋ณธ๋ฌธ
16.1 ๋ด๋ถ ์ฌ๋กฏ๊ณผ ๋ด๋ถ ๋ฉ์๋
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ตฌํ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํ๊ธฐ ์ํด ECMAScript ์ฌ์์์ ์ฌ์ฉํ๋ ์์ฌ ํ๋กํผํฐ์ ์์ฌ ๋ฉ์๋๋ค.
ECMAScript ์ ์ ์๋๋๋ก ๊ตฌํ์ ๋์ด์์ผ๋ ๊ณต๊ฐ๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ ์๋์ฌ์
์ง์ ์ ๊ทผ๊ณผ ํธ์ถ์ ํ ์ ์๋ค.
๋จ, ์ผ๋ถ ๋ด๋ถ ์ฌ๋กฏ๊ณผ ๋ด๋ถ ๋ฉ์๋๋ ๊ฐ์ ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด ๋ชจ๋ ๊ฐ์ฒด๋ [[prototype]]์ด๋ผ๋ ๋ด๋ถ ์ฌ๋กฏ์ ๊ฐ๋๋ค.
์ด ๋ด๋ถ ์ฌ๋กฏ์ .__proto__๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
16.2 ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ์ ํ๋กํผํฐ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ฒด
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ๋กํผํฐ๋ฅผ ์์ฑํ ๋ ํ๋กํผํฐ์ ์ํ๋ฅผ ๋ํ๋ด๋ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ ์ ์ํ๋ค.
ํ๋กํผํฐ์ ๊ฐ, ๊ฐ์ ๊ฐฑ์ ๊ฐ๋ฅ ์ฌ๋ถ,์ด๊ฑฐ ๊ฐ๋ฅ ์ฌ๋ถ,์ฌ์ ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ๋งํ๋ค.
ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ด๋ฆฌํ๋ ๋ด๋ถ์ํ ๊ฐ์ธ
๋ด๋ถ ์ฌ๋กฏ [[value]], [[writable]], [[Enumerable]], [[Configurable]]์ด๋ค.
const person = {
name: 'Lee',
};
console.log(Object.getOwnPropertyDescriptor(person, 'name'));
// {value: "Lee", writable: true, enumerable: true, configurable: true}
๋ฐ๋ผ์ ์ง์ ์ ๊ทผํ ์ ์์ง๋ง Object.getOwnPropertyDescriptor ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ผ๋ก ํ์ธํ ์ ์๋ค.
Object.getOwnPropertyDescriptor ๋ฉ์๋๋ ํ๋์ ํ๋กํผํฐ์ ๋ํด ํ๋กํผํฐ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํ์ง๋ง
ES8์์ ๋์
๋ Object.getOwnPropertyDescriptors ๋ฉ์๋๋ ๋ชจ๋ ํ๋กํผํฐ์ ์ดํธ๋ฆฌ๋ทฐํธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํ๋กํผํฐ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ฒด๋ค์ ๋ฐํํ๋ค.
const person = {
name: "Lee"
};
person.age = 20;
console.log(Object.getOwnPropertyDescriptors(person));
//
{
name : {value: "Lee", writable: true, enumerable: true, configurable; true},
age : {value: 20, writable: true, enumerable: true, configurable; true},
}
16.3 ๋ฐ์ดํฐ ํ๋กํผํฐ์ ์ ๊ทผ์ ํ๋กํผํฐ
- ๋ฐ์ดํฐ ํ๋กํผํฐ
๋ฐ์ดํฐ ํ๋กํผํฐ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ๋๋ค.
์ด ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํ๋กํผํฐ๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ ์ ์ ๋๋ค.
- ์ ๊ทผ์ ํ๋กํผํฐ
์์ฒด์ ์ผ๋ก ๊ฐ์ ๊ฐ์ง ์๊ณ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ๋กํผํฐ์ ๊ฐ์ ์ฝ๊ฑฐ๋ ์ ์ฅํ ๋ ํธ์ถ๋๋ ์ ๊ทผ์ ํจ์๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ์ด๋ค.
[[get]] , [[set]] , [[Enumerable]] , [[Configurable]]
์ ๊ทผ์ ํจ์๋ getter/setter ํจ์๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
์ ๊ทผ์ ํ๋กํผํฐ๋ getter์ setter ํจ์๋ฅผ ๋ชจ๋ ์ ์ํ ์๋ ์๊ณ ํ๋๋ง ์ ์ํ ์๋ ์๋ค.
16.4 ํ๋กํผํฐ ์ ์
ํ๋กํผํฐ ์ ์๋ ์๋ก์ด ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๋ฉด์ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ๊ฑฐ๋, ๊ธฐ์กด ํ๋กํผํฐ์ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฌ์ ์ํ๋ ๊ฒ์ ๋งํ๋ค.
Object.defineProperty ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋กํผํฐ์ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ ์ํ ์ ์๋ค.
์ธ์๋ก๋ ๊ฐ์ฒด์ ์ฐธ์กฐ์ ๋ฐ์ดํฐ ํ๋กํผํฐ์ ํค์ธ ๋ฌธ์์ด, ํ๋กํผํฐ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ค.
const person = {};
// ๋ฐ์ดํฐ ํ๋กํผํฐ ์ ์
Object.defineProperty(person, 'firstName', {
value: 'Kim',
writeable: true,
enumerable: true,
configurable: true,
});
16.5 ๊ฐ์ฒด ๋ณ๊ฒฝ ๋ฐฉ์ง
๊ฐ์ฒด๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ์ด๋ฏ๋ก ์ฌํ ๋น ์์ด ์ง์ ๋ณ๊ฒฝํ ์ ์๋ค.
ํ๋กํฐํฐ๋ฅผ ์ถ๊ฐ/์ญ์ ํ ์ ์๊ณ ํ๋กํผํฐ ๊ฐ์ ๊ฐฑ์ ํ ์๋ ์์ผ๋ฉฐ Object.defineProperty ๋๋ Object.defineProperties ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฌ์ ์ํ ์ ์๋ค.
'๐์ฑ > ๋ฅ๋ค์ด๋ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
12์ฅ ํจ์ (2) | 2023.11.23 |
---|---|
15์ฅ let,const ํค์๋์ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ (0) | 2023.11.21 |
14์ฅ ์ ์ญ ๋ณ์์ ๋ฌธ์ ์ (0) | 2023.11.20 |
13์ฅ ์ค์ฝํ (1) | 2023.11.20 |
8์ฅ ์ ์ด๋ฌธ (0) | 2023.11.17 |