[Javascript] ๊ฐ์ฒด

seungjin Kimยท2023๋…„ 3์›” 10์ผ

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
4/7
post-thumbnail

์ด ๊ธ€์˜ ๋ชฉ์ 

๐Ÿ“Œ javascript์—์„œ key : value ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด์— ๊ตฌ์กฐ์™€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค.

๊ฐ์ฒด


1.๊ฐ์ฒด๋ž€

1. ๊ฐ์ฒด์˜ ํ˜•ํƒœ
key์™€ value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐํƒ€์ž…๋กœ
{...}์•ˆ์— key : value ํ˜•ํƒœ๋กœ ์ง‘์–ด๋„ฃ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” key์™€ value๋ฅผ ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

let user = {     // ๊ฐ์ฒด
  name: "John",  // ํ‚ค: "name",  ๊ฐ’: "John"
  age: 30        // ํ‚ค: "age", ๊ฐ’: 30
};
  • ์ฒซ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ - name๊ณผ John
  • ๋‘ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ - age์™€ 30

๊ฐ์ฒด๋Š” ์„œ๋ž์žฅ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ํŒŒ์ผ์„ ์—ด๋ฉด ๋‚˜์˜ ์ด๋ฆ„, ๋‚˜์ด๊ฐ€ ๋‚˜์™€์žˆ๊ณ , ๊ทธ๋ ‡๊ฒŒ ์ˆ˜๋ฐฑ๊ฐœ ํ˜น์€ ์ˆ˜๋งŒ๊ฐœ์˜ ์ž๋ฃŒ๋“ค์„ ์Œ“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. key๊ฐ’๊ณผ value๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์–ด ๊ฐ€๋…์„ฑ ๋˜ํ•œ ์ข‹์Šต๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์–ป๊ธฐ

// ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์–ป๊ธฐ
alert( user.name ); // John
alert( user.age ); // 30

์›ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ์‚ญ์ œ

delete user.age;

์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“  ํ”„๋กœํผํ‹ฐ๋Š” ๋”ฐ์˜ดํ‘œ ์ฒ˜๋ฆฌ
likes + birds ๋Š” "likes birds"๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

let user = {
  name: "John",
  age: 30,
  "likes birds": true  // ๋ณต์ˆ˜์˜ ๋‹จ์–ด๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
};

๋”ฐ์˜ดํ‘œ ์ฒ˜๋ฆฌํ•œ ๊ฐ์ฒด์˜ ๋ณ€์ˆ˜๋Š” []๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•
'๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•(square bracket notation)'

let user = {};

// set
user["likes birds"] = true;

// get
alert(user["likes birds"]); // true

// delete
delete user["likes birds"];

ํ”„๋กœํผํ‹ฐ


key๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

let user = {
  name: "John",
  age: 30
};

let key = prompt("์‚ฌ์šฉ์ž์˜ ์–ด๋–ค ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”?", "name");

// ๋ณ€์ˆ˜๋กœ ์ ‘๊ทผ
alert( user[key] ); // John (ํ”„๋กฌํ”„ํŠธ ์ฐฝ์— "name"์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ)

๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ(computed property)
ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ด๋ฅผ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • ๊ฐ์ฒด๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด [fruit]๋กœ ์ •ํ•ด ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
let fruit = prompt("์–ด๋–ค ๊ณผ์ผ์„ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?", "apple");

let bag = {
  [fruit]: 5, // ๋ณ€์ˆ˜ fruit์—์„œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋™์ ์œผ๋กœ ๋ฐ›์•„ ์˜ต๋‹ˆ๋‹ค.
};

alert( bag.apple ); // fruit์— "apple"์ด ํ• ๋‹น๋˜์—ˆ๋‹ค๋ฉด, 5๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ๋น„์›Œ๋‘๊ณ , ๋งˆ์ง€๋ง‰์— ๊ฐ€๋ณ€์ ์ธ ๋ณ€์ˆ˜๋ฅผ []๋Œ€๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
let fruit = prompt("์–ด๋–ค ๊ณผ์ผ์„ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?", "apple");
let bag = {};

// ๋ณ€์ˆ˜ fruit์„ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
bag[fruit] = 5;

ํ”„๋กœํผํ‹ฐ ํ•จ์ถ•ํ•˜๊ธฐ
ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์ด ๋™์ผํ•˜๋ฉด ํ•จ์ถ•์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ”„๋กœํผํ‹ฐ ๊ฐ’ ๋‹จ์ถ• ๊ตฌ๋ฌธ(propery value shorthand)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

function makeUser(name, age) {
  return {
    name, // name: name ๊ณผ ๊ฐ™์Œ
    age,  // age: age ์™€ ๊ฐ™์Œ
    // ...
  };
}

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์˜ ์ œ์•ฝ์‚ฌํ•ญ

๋ณ€์ˆ˜์—๋Š” ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜์ง€๋งŒ, ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.

// ์˜ˆ์•ฝ์–ด๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
let obj = {
  for: 1,
  let: 2,
  return: 3
};

alert( obj.for + obj.let + obj.return );  // 6

in ์—ฐ์‚ฐ์ž๋กœ ํ”„๋กœํผํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€ ํŒŒ์•…ํ•˜๊ธฐ
javascript์—์„œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ ค ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ชจ๋‘ undefined ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  1. noSuchProperty ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™•์ธํ•˜๊ธฐ
let user = {};

alert( user.noSuchProperty === undefined ); // true๋Š” 'ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ'์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  1. in์„ ์‚ฌ์šฉํ•˜๊ธฐ
"key" in object
  1. ๊ฐ์ฒด์˜ ๊ฐ’์ด undefined์˜ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ, ์•„๋ž˜์ฒ˜๋Ÿผ ๊ฒ€์‚ฌํ•ด์ค๋‹ˆ๋‹ค.
let obj = {
  test: undefined
};

alert( obj.test ); // ๊ฐ’์ด `undefined`์ด๋ฏ€๋กœ, ์–ผ๋Ÿฟ ์ฐฝ์—” undefined๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ”„๋กœํผํ‹ฐ test๋Š” ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

alert( "test" in obj ); // `in`์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ์œ ๋ฌด๋ฅผ ์ œ๋Œ€๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(true๊ฐ€ ์ถœ๋ ฅ๋จ).

๊ฐ์ฒด ์ˆœํšŒํ•˜๊ธฐ


for in ๋ฐ˜๋ณต๋ฌธ
์•„๋ž˜์ฒ˜๋Ÿผ for..in ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ‚ค๋ฅผ ์ˆœํšŒํ•  ์ˆ˜ ์žˆใ……๋ธŒ๋‹ˆ๋‹ค.
์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ์ฒด user์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  age: 30,
  isAdmin: true
};

for (let key in user) {
  // ํ‚ค
  alert( key );  // name, age, isAdmin
  // ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’
  alert( user[key] ); // John, 30, true
}

๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ๋™์ž‘

ํ”„๋กœํผํ‹ฐ์—๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ์„๊นŒ?
๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ์ˆœ์„œ๋กœ ์ˆœํšŒํ• ๊นŒ?

๊ฐ์ฒด๋Š” 'ํŠน๋ณ„ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ'๋ฉ๋‹ˆ๋‹ค.

  • ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ : ์ž๋™์œผ๋กœ ์ •๋ ฌ (1๋ถ€ํ„ฐ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฐจ๋ก€๋Œ€๋กœ)
  • ๊ทธ ์™ธ ํ”„๋กœํผํ‹ฐ : ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ ๊ทธ๋Œ€๋กœ ์ •๋ ฌ
let codes = {
  "49": "๋…์ผ",
  "41": "์Šค์œ„์Šค",
  "44": "์˜๊ตญ",
  // ..,
  "1": "๋ฏธ๊ตญ"
};

for (let code in codes) {
  alert(code); // 1, 41, 44, 49
}

์œ„์˜ ์˜ˆ์‹œ๋กœ for..in ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด

  • ์ •์ˆ˜ ํ”„๋กœํผํ‹ฐ์— ์ธํ•ด์„œ 1๋ฒˆ์ธ ๋ฏธ๊ตญ๋ถ€ํ„ฐ 41,44,49 ์ฐจ๋ก€๋Œ€๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ์ฒด ๋ณต์‚ฌ

๊ฐ์ฒด์™€ ์›์‹œ ํƒ€์ž…์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ์ฒด๋Š” โ€˜์ฐธ์กฐ์— ์˜ํ•ด(by reference)โ€™ ์ €์žฅ๋˜๊ณ  ๋ณต์‚ฌ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

let message = "Hello!";
let phrase = message;

์˜ˆ๋ฅผ ๋“ค๋ฉด) ๋‘๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋ณ€์ˆ˜์— ๊ฐ๊ฐ ๋ฌธ์ž์—ด Hello!๊ฐ€ ์ €์žฅ์ด ๋ฉ๋‹ˆ๋‹ค.
๊ฐ์ฒด์˜ ๋™์ž‘๋ฐฉ์‹์€ ์ด์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋ณ€์ˆ˜์—” ๊ฐ์ฒด๊ฐ€ ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” '๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ'์ธ ๊ฐ์ฒด์— ๋Œ€ํ•œ '์ฐธ์กฐ๊ฐ’' ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
์ด ๋ง์ด ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด

  • ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ๋”ฐ๋กœ ์ €์žฅ๋˜๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋œ ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•  ๋• ๊ฐ์ฒด์˜ ์ฐธ์กฐ ๊ฐ’์ด ๋ณต์‚ฌ๋˜๊ณ  ๊ฐ์ฒด๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
let user = { name: 'John' };

let admin = user;

admin.name = 'Pete'; // 'admin' ์ฐธ์กฐ ๊ฐ’์— ์˜ํ•ด ๋ณ€๊ฒฝ๋จ

alert(user.name); // 'Pete'๊ฐ€ ์ถœ๋ ฅ๋จ. 'user' ์ฐธ์กฐ ๊ฐ’์„ ์ด์šฉํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•จ

admin์˜ name์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ user์˜ name์ด ์ˆ˜์ •๋œ ์ฑ„๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ๋ณต์‚ฌ, ๋ณ‘ํ•ฉ๊ณผ Object.assign

๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋œ ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฐ’์ด ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์ง„๋‹ค๋Š” ๊ฑธ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

  • ์•„๋ž˜์™€ ๊ฐ™์ด for...in์„ ํ†ตํ•ด์„œ clone์ด๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์— ๋ชจ๋‘ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
let user = {
  name: "John",
  age: 30
};

let clone = {}; // ์ƒˆ๋กœ์šด ๋นˆ ๊ฐ์ฒด

// ๋นˆ ๊ฐ์ฒด์— user ํ”„๋กœํผํ‹ฐ ์ „๋ถ€๋ฅผ ๋ณต์‚ฌํ•ด ๋„ฃ์Šต๋‹ˆ๋‹ค.
for (let key in user) {
  clone[key] = user[key];
}

// ์ด์ œ clone์€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋ณต์ œ๋ณธ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
clone.name = "Pete"; // clone์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

alert( user.name ); // ๊ธฐ์กด ๊ฐ์ฒด์—๋Š” ์—ฌ์ „ํžˆ John์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  Object.assign์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

dest๊ฐ์ฒด๋ฅผ ๋ชฉํ‘œ๋กœํ•˜์—ฌ src1, src2, scr3์„ dest๊ฐ์ฒด์— ๋ชจ๋‘ ๋ณ‘ํ•ฉ์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

Object.assign(dest, [src1, src2, src3...])

์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

let user = { name: "John" };

let permissions1 = { canView: true };
let permissions2 = { canEdit: true };

// permissions1๊ณผ permissions2์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ user๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
Object.assign(user, permissions1, permissions2);

// now user = { name: "John", canView: true, canEdit: true }

์ค‘์ฒฉ ๊ฐ์ฒด ๋ณต์‚ฌ

์ค‘์ฒฉ ์•ˆ์— ์ค‘์ฒฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ์ด๋ฅผ ์ค‘์ฒฉ ๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  sizes: {
    height: 182,
    width: 50
  }
};

alert( user.sizes.height ); // 182

์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ์ฒด ์†์˜ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
๊ฐ์ฒด.key.key ๊ฐ’์„ ํ†ตํ•ด ๊นŠ์€ ๋ณต์‚ฌ(deep cloning)๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

let user = {
  name: "John",
  sizes: {
    height: 182,
    width: 50
  }
};

let clone = Object.assign({}, user);

alert( user.sizes === clone.sizes ); // true, ๊ฐ™์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

// user์™€ clone๋Š” sizes๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
user.sizes.width++;       // ํ•œ ๊ฐ์ฒด์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
alert(clone.sizes.width); // 51, ๋‹ค๋ฅธ ๊ฐ์ฒด์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
profile
์ฝ”๋“œ ํ•œ ์ค„

0๊ฐœ์˜ ๋Œ“๊ธ€