๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JavaScript

[JavaScript] ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ(property) ์ ‘๊ทผ ๋ฐฉ๋ฒ•, ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ ์ฐจ์ด

by junvely 2023. 2. 12.

๐Ÿ™Œ๊ฐ์ฒด(Object)

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด(object) ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ “๋ชจ๋“  ๊ฒƒ”์ด ๊ฐ์ฒด์ด๋‹ค. ์›์‹œ ํƒ€์ž…(Primitives)์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค(ํ•จ์ˆ˜, ๋ฐฐ์—ด, ์ •๊ทœํ‘œํ˜„์‹ ๋“ฑ)์€ ๋ชจ๋‘ ๊ฐ์ฒด์ด๋‹ค.

 

์†์„ฑ(property)๊ณผ ๋ฉ”์†Œ๋“œ(method)์˜ ์ฐจ์ด

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” ํ‚ค(key)๊ณผ ๊ฐ’(value)์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ(Property)๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค. ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด์ด๋ฏ€๋กœ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ, ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์†Œ๋“œ(๊ฐ์ฒด์— ์ œํ•œ๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜)๋ผ ๋ถ€๋ฅธ๋‹ค.

- ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” ํ”„๋กœํผํ‹ฐ(property)์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘(behavior)์„ ์˜๋ฏธํ•˜๋Š” ๋ฉ”์†Œ๋“œ(method)๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ด๋‹ค.

 

๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ(property) ์ƒ์„ฑ ๋ฐฉ๋ฒ•

- ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ๋”ฐ์˜ดํ‘œ(‘’ ๋˜๋Š” ““)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

- ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํšจํ•œ ์ด๋ฆ„์ธ ๊ฒฝ์šฐ, ๋”ฐ์˜ดํ‘œ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํšจํ•œ ์ด๋ฆ„์ด ์•„๋‹Œ ๊ฒฝ์šฐ, ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค. 

- ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ธ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฉ”์†Œ๋“œ๋ผ ํ•œ๋‹ค.

var person = {
  'first-name': 'Ung-mo',
  'last-name': 'Lee',
  gender: 'male',
  1: 10,
  function: 1 // OK. ํ•˜์ง€๋งŒ ์˜ˆ์•ฝ์–ด๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.
};

console.log(person);

- ์˜ˆ์•ฝ์–ด๋ฅผ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜์—ฌ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜ˆ์•ฝ์–ด๋ฅผ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ˆ์•ฝ์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

abstract  arguments boolean break byte
case  catch char  class*  const
continue  debugger  default delete  do
double  else  enum* eval  export*
extends*  false final finally float
for function  goto  if  implements
import* in  instanceof  int interface
let long  native  new null
package private protected public  return
short static  super*  switch  synchronized
this  throw throws  transient true
try typeof  var void  volatile
while with  yield
// *๋Š” ES6์—์„œ ์ถ”๊ฐ€๋œ ์˜ˆ์•ฝ์–ด

 

โœจ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ(property) ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋งˆ์นจํ‘œ(.) ํ‘œ๊ธฐ๋ฒ•๊ณผ ๋Œ€๊ด„ํ˜ธ([]) ํ‘œ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ด ๋‘ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด๋ฅผ ์‚ดํŽด๋ณด์ž.

var person = {
  'first-name': 'Ung-mo',
  'last-name': 'Lee',
  gender: 'male',
  1: 10
};

console.log(person);

console.log(person.first-name);    // NaN: undefined-undefined
console.log(person[first-name]);   // ReferenceError: first is not defined
console.log(person['first-name']); // 'Ung-mo'

console.log(person.gender);    // 'male'
console.log(person[gender]);   // ReferenceError: gender is not defined
console.log(person['gender']); // 'male'

console.log(person['1']); // 10
console.log(person[1]);   // 10 : person[1] -> person['1']
console.log(person.1);    // SyntaxError

1. ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ์œ ํšจํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์ด๊ณ  ์˜ˆ์•ฝ์–ด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ  

=> ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•, ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) gender, name, age, color ... => ๋งˆ์นจํ‘œ(.) , ๋Œ€๊ด„ํ˜ธ([ ])  ๋‘˜ ๋‹ค ๊ฐ€๋Šฅ

 

2. ์œ ํšจํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ์˜ˆ์•ฝ์–ด์ธ ๊ฒฝ์šฐ

=> ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค. => ๋Œ€๊ด„ํ˜ธ ๋‚ด์— ๋“ค์–ด๊ฐ€๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•œ๋‹ค.

ex) new, const, my-name, color-list ... => ๋Œ€๊ด„ํ˜ธ([ ])๋กœ ์ ‘๊ทผ, ๋Œ€๊ด„ํ˜ธ๋Š” ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•จ

 

= ์ •๋ฆฌํ•˜์ž๋ฉด,

1) . ๋‹ท์œผ๋กœ ์ ‘๊ทผ : ์ฝ”๋”ฉํ•  ๋•Œ ํ™•์‹คํžˆ ๊ทธ key์˜ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ(๊ธฐ๋ณธ์ ์œผ๋กœ ์ฝ”๋”ฉํ•˜๋ฉด์„œ name์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ)

2) [ 'key' ] ๋กœ ์ ‘๊ทผ : ์˜ˆ์•ฝ์–ด์ด๊ฑฐ๋‚˜, ์ •ํ™•ํ•˜๊ฒŒ ์–ด๋–ค key๊ฐ€ ํ•„์š”ํ•œ์ง€ ๋ชจ๋ฅผ ๋•Œ(์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฐ์ •๋  ๋•Œ > ์‹ค์‹œ๊ฐ„์œผ๋กœ ์›ํ•˜๋Š” key์˜ ๊ฐ’์„ ๋ฐ›์•„์˜ค๊ณ  ์‹ถ์„ ๋•Œ , ๋™์ ์œผ๋กœ key์˜ value๋ฅผ ๋ฐ›์•„์˜ค๊ณ  ์‹ถ์„ ๋•Œ)

function printValue(obj, key) {
  console.log(obj[key]);
}
printValue(ellie, "name");
printValue(ellie, "age");

 

 

<์ฐธ๊ณ >

https://poiemaweb.com/js-object

 

Object | PoiemaWeb

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด(object)๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ “๋ชจ๋“  ๊ฒƒ”์€ ๊ฐ์ฒด์ด๋‹ค. ์›์‹œ ํƒ€์ž…(Primitives)์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค(ํ•จ์ˆ˜, ๋ฐฐ์—ด, ์ •๊ทœํ‘œํ˜„์‹ ๋“ฑ)์€ ๋ชจ๋‘

poiemaweb.com