๊ฐ์ฒด(Object)๋?
๊ฐ์
์๋ฐ์คํฌ๋ฆฝํธ์๋ ์ฌ๋ ๊ฐ์ง ์๋ฃํ์ด ์๋ค.
์ด ์ค ์ผ๊ณฑ ๊ฐ๋ ์ค์ง ํ๋์ ๋ฐ์ดํฐ(๋ฌธ์์ด, ์ซ์ ๋ฑ)๋ง ๋ด์ ์ ์์ด โ์์ํ(primitive type)โ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ์ฒดํ์
- ์์ํ๊ณผ ๋ฌ๋ฆฌ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์๋ค.
- ํค๋ก ๊ตฌ๋ถ๋ ๋ฐ์ดํฐ ์งํฉ์ด๋ ๋ณต์กํ ๊ฐ์ฒด(entity)๋ฅผ ์ ์ฅํ ์ ์๋ค.
์ฆ ๊ฐ์ฒด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฑฐ์ ๋ชจ๋ ๋ฉด์ ๋
น์์๋ ๊ฐ๋
์ด๋ฏ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ค๋ฃจ๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ ์ดํดํ๊ณ ์์ด์ผ ํ๋ค.
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ์ค๊ดํธ {}๋ฅผ ์ด์ฉํด ๋ง๋ค ์ ์๋๋ฐ, ์ค๊ดํธ ์์๋ โํค(key): ๊ฐ(value)โ ์์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ(property)๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ฃ์ ์ ์๋๋ฐ, ์๋์ ๊ฐ์ด ํ์ฉํ ์ ์์ผ๋ฉฐ, ํ๋กํผํฐ ํค๋ โํ๋กํผํฐ ์ด๋ฆโ ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋กํผํฐ ๊ฐ์ ๋ชจ๋ ์๋ฃํ์ด ์ฌ ์ ์๋ค.
- ํค์๋ ๋ฌธ์ํ
- ๊ฐ์๋ ์๋ฃํ
let user = {
// ๊ฐ์ฒด user๋ผ๋ obj๋ฅผ ์์ฑํ๋๋ฐ, ์์ ํ๋กํผํฐ๋ก name๊ณผ age๋ฅผ ์์ฑํ ์์ด๋ค.
name: 'JungSeaHyun', // ํค: "name", ๊ฐ: "JungSeHyun"
age: 33, // ํค: "age", ๊ฐ: 33
};
๊ทธ๋์ ๊ฐ์ฒด๋?
- ๊ฐ์ฒด๋ ๋ช ๊ฐ์ง ํน์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ฐ๊ด ๋ฐฐ์ด(associative array)์ด๋ค.
- ๊ฐ์ฒด๋ ํ๋กํผํฐ(ํค-๊ฐ ์)๋ฅผ ์ ์ฅํ๋ค.
- ํ๋กํผํฐ ํค๋ ๋ฌธ์์ด์ด๋ ์ฌ๋ณผ์ด์ฌ์ผ ํ๋ค. (๋ณดํต์ ๋ฌธ์์ด)
- ๊ฐ์ ์ด๋ค ์๋ฃํ๋ ๊ฐ๋ฅํ๋ค.
- ํ๋กํผํฐ ์ ๊ทผ ๋ฐฉ์์ ์ , ๋๊ดํธ ํ๊ธฐ๋ฒ์ด ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ ๊ฐ์ฒด ์ด์ธ์๋ ๋ค์ํ ์ข ๋ฅ์ ๊ฐ์ฒด๊ฐ ์๋ค. (์ถ๊ฐ๋ก, โArrayํ์ โ์ด๋ โDate ํ์ โ์ ๋ ๋ฆฝ์ ์ธ ์๋ฃํ์ด ์๋๋ผ โ๊ฐ์ฒดโํ์ ์ํ๋ค.)
- Array : ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ปฌ๋ ์ ์ ์ ์ฅํ ๋ ์ฐ์
- Date : ๋ ์ง์ ์๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ์ฐ์
- Error : ์๋ฌ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ์ฐ์
- ๊ธฐํ ๋ฑ๋ฑ
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋?
-
๊ฐ์ฒด ์์ฑ์:
๋น ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ Object ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ธ๋ฐ,ย ํ์ฌ ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ถ์ฅ๋์ง ์๋๋ค.
const object = new Object();
-
๊ฐ์ฒด์ ์์ฑ ๋ฐฉ๋ฒ:
Object์ create ๋ฉ์๋๋ ํ๋กํ ํ์ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ์ฌ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
const object = Object.create(null);
-
๊ฐ์ฒด ๋ฆฌํฐ๋ด ๊ตฌ๋ฌธ: ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ
๊ฐ์ฒด ๋ฆฌํฐ๋ด ๊ตฌ๋ฌธ(๋๋ ๊ฐ์ฒด ์ด๋์ ๋ผ์ด์ )์ ์ค๊ดํธ๋ก ๋ฌถ์ธ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ด๋ฆ-๊ฐ ์ ์งํฉ์ด๋ค.
const object = { name: 'Sudheer', age: 34, };
- Object literal property values can be of any data type, including array, function, and nested object.
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์ฑ ๊ฐ์ ๋ฐฐ์ด, ํจ์ ๋ฐ ์ค์ฒฉ๋ ๊ฐ์ฒด๋ฅผ ํฌํจํ ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ผ ์ ์๋ค.
-
ํจ์ ์์ฑ์:
ํจ์๋ฅผ ์์ฑํ๊ณ new ์ฐ์ฐ์๋ฅผ ์ ์ฉํ์ฌ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค.
function Person(name) { this.name = name; this.age = 21; } const object = new Person('Sudheer');
-
ํ๋กํ ํ์ ์ด ์๋ ํจ์ ์์ฑ์:
์ด๊ฒ์ ํจ์ ์์ฑ์์ ์ ์ฌํ์ง๋ง ์์ฑ ๋ฐ ๋ฉ์๋์ ๋ํด ํ๋กํ ํ์ ์ ์ฌ์ฉํ๋ค.
function Person() {} Person.prototype.name = 'Sudheer'; const object = new Person();
์ด๊ฒ์ ํจ์ ํ๋กํ ํ์ ์ด ์๋ ๊ฐ์ฒด ์์ฑ ๋ฉ์๋๋ก ์์ฑ๋ ์ธ์คํด์ค์ ์ธ์คํด์ค ๋ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ธ์๋ก ์ฌ์ฉํ์ฌ ํด๋น ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
function func() {}; new func(x, y, z);` **(๋๋)** // Create a new instance using function prototype. const newInstance = Object.create(func.prototype) // Call the function const result = func.call(newInstance, x, y, z), // If the result is a non-null object then use it otherwise just use the new instance. console.log(result && typeof result === 'object' ? result : newInstance);
-
ES6 ํด๋์ค ๊ตฌ๋ฌธ:
ES6์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํด๋์ค ๊ธฐ๋ฅ์ด ๋์ ๋์๋ค.
class Person { constructor(name) { this.name = name; } } const object = new Person('Sudheer');
-
์ฑ๊ธํค ํจํด:
Singleton์ ํ ๋ฒ๋ง ์ธ์คํด์คํํ ์ ์๋ ๊ฐ์ฒด์ธ๋ฐ,ย ์์ฑ์์ ๋ํ ๋ฐ๋ณต๋ ํธ์ถ์ ๋์ผํ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๊ณ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์ค์๋ก ์์ฑํ์ง ์๋๋ก ํ ์ ์๋ค.