🐀 JavaScript 객체와 λΆˆλ³€μ„±μ΄λž€ ?

πŸ“ŒκΈ°λ³Έν˜• 데이터와 μ°Έμ‘°ν˜• 데이터

πŸ’Ώ κΈ°λ³Έν˜• νƒ€μž…(Primitive type)...?
: 둜우 λ ˆλ²¨μ—μ„œ 직접 ν‘œν˜„λ˜λŠ” λΆˆλ³€μ˜ 데이터.

  • Boolean νƒ€μž…
  • Null νƒ€μž…
  • Undefined νƒ€μž…
  • Number νƒ€μž…
  • BigInt νƒ€μž…
  • String νƒ€μž…
  • Symbol νƒ€μž…

πŸ’Ώ μ°Έμ‘°ν˜• νƒ€μž…(Reference type)...?

  • Object
  • Array
  • Function
  • Date
  • regexp
  • Map, WeakMap
  • Set, WeakSet

πŸ“Œ λΆˆλ³€ 객체λ₯Ό λ§Œλ“œλŠ” 방법

: λΆˆλ³€ κ°μ²΄λŠ” 생성 ν›„ κ·Έ μƒνƒœλ₯Ό λ°”κΏ€ 수 μ—†λŠ” 객체λ₯Ό μ˜λ―Έν•¨.

  • Object.freeze() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λŠ” 방법.

    객체λ₯Ό λ™κ²°ν•œλ‹€κ³  ν‘œν˜„ν•œλ‹€. λ™κ²°λœ κ°μ²΄λŠ” μƒˆλ‘œμš΄ 속성을 μΆ”κ°€ν•˜κ±°λ‚˜ μ‘΄μž¬ν•˜λŠ” 속성을 μ œκ±°ν•˜λŠ” 것을 λ°©μ§€ν•˜λ©° μ‘΄μž¬ν•˜λŠ” μ†μ„±μ˜ λΆˆλ³€μ„±, μ„€μ • κ°€λŠ₯μ„±(configurability), μž‘μ„± κ°€λŠ₯성이 λ³€κ²½λ˜λŠ” 것을 λ°©μ§€ν•˜κ³ , μ‘΄μž¬ν•˜λŠ” μ†μ„±μ˜ 값이 λ³€κ²½λ˜λŠ” 것도 λ°©μ§€ν•©λ‹ˆλ‹€. λ˜ν•œ, 동결 κ°μ²΄λŠ” κ·Έ ν”„λ‘œν† νƒ€μž…μ΄ λ³€κ²½λ˜λŠ”κ²ƒλ„ λ°©μ§€ν•©λ‹ˆλ‹€. freeze()λŠ” μ „λ‹¬λœ λ™μΌν•œ 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
const obj = {
  prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42

좜처:https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

πŸ“Œ 얕은 볡사와 κΉŠμ€ 볡사

πŸ’Ύ **얕은 볡사

: 객체의 'μ°Έμ‘°κ°’(μ£Όμ†Œ κ°’)'을 볡사

const A = { name: '정원', age: 20};
const B = A;
console.log( A === B ); // true

B.name = 'μ •ν˜Έ';
console.log(A.name); // μ •ν˜Έ.

➑ 객체(A)λ₯Ό 직접 λŒ€μž…ν•˜λŠ” 경우, 참쑰에 μ˜ν•œ 할당이 μ΄λ£¨μ–΄μ§€λ―€λ‘œ λ‘˜μ€ 같은 데이터(μ£Όμ†Œ)λ₯Ό 가지고 μžˆλ‹€.
λ•Œλ¬Έμ— B의 propertyλ₯Ό μˆ˜μ •ν•˜κ³ , Aλ₯Ό 좜λ ₯해도 Bκ°’κ³Ό '동일'ν•˜λ‹€.

πŸ’ΎκΉŠμ€ 볡사...?

: 객체의 'μ‹€μ œ κ°’'을 볡사.

const A = {name: '정원', age: 20};
const B = { ...obj };
B.name = 'μ •ν˜Έ';

console.log( A === B ) // false
console.log( A.name ) // 정원

➑...(spread) μ—°μ‚°μžλ₯Ό 톡해 { }μ•ˆμ— A의 propertyλ₯Ό λ³΅μ‚¬ν•˜μ—¬ B에 ν• λ‹Ήν•˜μ˜€λ‹€.
이제 A와 BλŠ” λ‹€λ₯Έ μ£Όμ†Œλ₯Ό κ°–κ²Œλ˜μ—ˆλ‹€.

<λͺ¨λ₯΄λŠ” 단어 정리>

πŸ“ƒ λ°”μΈλ”©μ΄λž€?
μ‹λ³„μžμ™€ 값을 μ—°κ²°ν•˜λŠ” κ³Όμ •.
λ³€μˆ˜μ„ μ–Έμ€ λ³€μˆ˜ 이름과 ν™•λ³΄λœ λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ£Όμ†Œλ₯Ό λ°”μΈλ”©ν•˜λŠ” 것이닀.

profile
개발자의 길둜 κ°€μŸˆμ•„~

0개의 λŒ“κΈ€