66651
πŸ‘€
66651
  • λΆ„λ₯˜ 전체보기 (57)
    • note (28)
    • log (13)
    • error (9)
    • etc (7)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
66651

πŸ‘€

note

[Deep Dive] 10-11μž₯

10μž₯ 객체 λ¦¬ν„°λŸ΄

κ°μ²΄λž€?

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 객체 기반의 ν”„λ‘œκ·Έλž˜λ° 언어이며, μ›μ‹œ 값을 μ œμ™Έν•œ λ‚˜λ¨Έμ§€ κ°’(ν•¨μˆ˜, λ°°μ—΄, μ •κ·œ ν‘œν˜„μ‹ λ“±)은 λͺ¨λ‘ 객체닀. 즉 κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이닀.

 

κ°μ²΄λŠ” ν”„λ‘œνΌν‹°μ˜ 집합이며, ν”„λ‘œνΌν‹°λŠ” 킀와 κ°’μœΌλ‘œ κ΅¬μ„±λœλ‹€. ν”„λ‘œνΌν‹° 값이 ν•¨μˆ˜μΌ 경우, 일반 ν•¨μˆ˜μ™€ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ λ©”μ„œλ“œλΌ λΆ€λ₯Έλ‹€.

  • ν”„λ‘œνΌν‹° : 객체의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°’(data)
  • λ©”μ„œλ“œ : ν”„λ‘œνΌν‹°(μƒνƒœ 데이터)λ₯Ό μ°Έκ³ ν•˜κ³  μ‘°μž‘ν•  수 μžˆλŠ” λ™μž‘(behavior)
var counter = {
  // ν”„λ‘œνΌν‹°
  num: 0, // ν”„λ‘œνΌν‹° 킀와 ν”„λ‘œνΌν‹° κ°’
  // λ©”μ„œλ“œ
  increase: function() {
    this.num++;
  }
};

 

 

객체 λ¦¬ν„°λŸ΄μ— μ˜ν•œ 객체 생성

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”„λ‘œν† νƒ€μž… 기반 객체지ν–₯ μ–Έμ–΄λ‘œμ„œ 클래슀 기반 객체지ν–₯ μ–Έμ–΄μ™€λŠ” 달리 λ‹€μ–‘ν•œ 객체 생성 방법을 μ§€μ›ν•œλ‹€. (객체 λ¦¬ν„°λŸ΄, Object μƒμ„±μž ν•¨μˆ˜, μƒμ„±μž ν•¨μˆ˜, Object.create λ©”μ„œλ“œ, 클래슀ES6) κ°€μž₯ 일반적이고 κ°„λ‹¨ν•œ 방법은 객체 λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λŠ” 방법이닀.

// 객체 λ¦¬ν„°λŸ΄μ˜ μ€‘κ΄„ν˜ΈλŠ” μ½”λ“œ 블둝을 μ˜λ―Έν•˜μ§€ μ•ŠλŠ”λ‹€. 
// κ°’μœΌλ‘œ ν‰κ°€λ˜λŠ” ν‘œν˜„μ‹μ΄λ―€λ‘œ μ€‘κ΄„ν˜Έ 뒀에 μ„Έλ―Έμ½œλ‘ μ„ 뢙인닀.
var person = {
  name: 'Lee',
  sayHello: function () {
    console.log(`Hello! My name is ${this.name}.`);
  }
};

console.log(typeof person); // object
console.log(typeof person); // {name: 'Lee', sayHello: f}

 

μΈμŠ€ν„΄μŠ€λž€ ν΄λž˜μŠ€μ— μ˜ν•΄ μƒμ„±λ˜μ–΄ λ©”λͺ¨λ¦¬μ— μ €μž₯된 싀체λ₯Ό λ§ν•œλ‹€. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ κ°μ²΄λŠ” ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€λ₯Ό ν¬ν•¨ν•œ κ°œλ…μ΄λ‹€. 클래슀 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν…œν”Œλ¦Ώμ˜ 역할을 ν•œλ‹€.

 

 

ν”„λ‘œνΌν‹°

ν”„λ‘œνΌν‹° 킀와 ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 값은 λ‹€μŒκ³Ό κ°™λ‹€.

  • ν”„λ‘œνΌν‹° ν‚€ : 빈 λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄ λ˜λŠ” μ‹¬λ²Œ κ°’
  • ν”„λ‘œνΌν‹° κ°’ : μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ¨λ“  κ°’

ν”„λ‘œνΌν‹° ν‚€λŠ” ν”„λ‘œνΌν‹° 값에 μ ‘κ·Ό ν•  수 μžˆλŠ” μ΄λ¦„μœΌλ‘œμ„œ μ‹λ³„μž 역할을 ν•œλ‹€. μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ λ”°λ₯΄μ§€ μ•ŠλŠ” μ΄λ¦„μ—λŠ” λ°˜λ“œμ‹œ λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. ν•˜μ§€λ§Œ 가급적 μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ μ€€μˆ˜ν•˜λŠ” ν”„λ‘œνΌν‹° ν‚€λ₯Ό μ‚¬μš©ν•  것을 ꢌμž₯ν•œλ‹€.

 

λ¬Έμžμ—΄ λ˜λŠ” λ¬Έμžμ—΄λ‘œ 평가할 수 μžˆλŠ” ν‘œν˜„μ‹μ„ μ‚¬μš©ν•΄ ν”„λ‘œνΌν‹° ν‚€λ₯Ό λ™μ μœΌλ‘œ 생성할 μˆ˜λ„ μžˆλ‹€. 이 κ²½μš°μ—λŠ” ν”„λ‘œνΌν‹° ν‚€λ‘œ μ‚¬μš©ν•  ν‘œν˜„μ‹μ„ λŒ€κ΄„ν˜Έλ‘œ λ¬Άμ–΄μ•Ό ν•œλ‹€.

var key = 'hello';

// ES5
var obj1 = {};
obj[key] = 'world';

// ES6
var obj2 = { [key]: 'world' };

 

 

ν”„λ‘œνΌν‹° 킀에 λ¬Έμžμ—΄μ΄λ‚˜ μ‹¬λ²Œ κ°’ μ™Έμ˜ 값을 μ‚¬μš©ν•˜λ©΄ 암묡적 νƒ€μž… λ³€ν™˜μ„ 톡해 λ¬Έμžμ—΄μ΄ λœλ‹€.
ex) ν”„λ‘œνΌν‹° ν‚€λ‘œ 숫자 λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λ©΄ λ”°μ˜΄ν‘œλŠ” λΆ™μ§€ μ•Šμ§€λ§Œ λ‚΄λΆ€μ μœΌλ‘œλŠ” λ¬Έμžμ—΄λ‘œ λ³€ν™˜λœλ‹€.

 

 

λ©”μ„œλ“œ

λ©”μ„œλ“œλŠ” 객체에 λ¬Άμ—¬ μžˆλŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€. λ©”μ„œλ“œ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•œ [ic]this[/ic] ν‚€μ›Œλ“œλŠ” 객체 μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” μ°Έμ‘°λ³€μˆ˜λ‹€.

 

 

ν”„λ‘œνΌν‹° μ ‘κ·Ό

ν”„λ‘œνΌν‹°μ— μ ‘κ·Όν•˜λŠ” 방법은 λ‹€μŒκ³Ό 같이 두 κ°€μ§€λ‹€.

  • λ§ˆμΉ¨ν‘œ ν‘œκΈ°λ²•
  • λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•

λŒ€κ΄„ν˜Έ ν”„λ‘œνΌν‹° μ ‘κ·Ό μ—°μ‚°μž 내뢀에 μ§€μ •ν•˜λŠ” ν”„λ‘œνΌν‹° ν‚€λŠ” λ°˜λ“œμ‹œ λ”°μ˜΄ν‘œλ‘œ 감싼 λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•œλ‹€. λŒ€κ΄„ν˜Έ ν”„λ‘œνΌν‹° μ ‘κ·Ό μ—°μ‚°μž 내에 λ”°μ˜΄ν‘œλ‘œ 감싸지 μ•Šμ€ 이름을 ν”„λ‘œνΌν‹° ν‚€λ‘œ μ‚¬μš©ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ‹λ³„μžλ‘œ ν•΄μ„ν•œλ‹€.

var person = {
  name: 'Lee'
  'first-name': 'suzy'
};

// λ§ˆμΉ¨ν‘œ ν‘œκΈ°λ²•
console.log(person.name);

// λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²• 
console.log(person['name']);

console.log(person.age); // undefined

person.'last-name'; // SyntaxError: Unexpected string
person.last-name; // λΈŒλΌμš°μ € ν™˜κ²½: NaN
                  // Node.js ν™˜κ²½ : ReferenceError
person['last-name']; // suzy

 

 

ν”„λ‘œνΌν‹° κ°’ κ°±μ‹ 

이미 μ‘΄μž¬ν•˜λŠ” ν”„λ‘œνΌν‹°μ— 값을 ν• λ‹Ήν•˜λ©΄ ν”„λ‘œνΌν‹° 값이 κ°±μ‹ λœλ‹€.

var person = {
  name: 'Lee'
};

person.name = 'Kim';

 

 

ν”„λ‘œνΌν‹° 동적 생성

μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œνΌν‹°μ— 값을 ν• λ‹Ήν•˜λ©΄ ν”„λ‘œνΌν‹°κ°€ λ™μ μœΌλ‘œ μƒμ„±λ˜μ–΄ μΆ”κ°€λ˜κ³  ν”„λ‘œνΌν‹° 값이 ν• λ‹Ή λœλ‹€.

var person = {
  name: 'Lee'
};

person.age = 20;

 

 

ν”„λ‘œνΌν‹° μ‚­μ œ

[ic]delete[/ic] μ—°μ‚°μžλŠ” 객체의 ν”„λ‘œνΌν‹°λ₯Ό μ‚­μ œν•œλ‹€.

var person = {
  name: 'Lee'
};

delete person.name;

 

 

ES6μ—μ„œ μΆ”κ°€λœ 객체 λ¦¬ν„°λŸ΄μ˜ ν™•μž₯ κΈ°λŠ₯

  • ν”„λ‘œνΌν‹° μΆ•μ•½ ν‘œν˜„
    : ES6μ—μ„œλŠ” ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 λ³€μˆ˜ 이름과 ν”„λ‘œνΌν‹° ν‚€κ°€ λ™μΌν•œ 이름일 λ•Œ ν”„λ‘œνΌν‹° ν‚€λ₯Ό μƒλž΅ν•  수 μžˆλ‹€.
let x = 1, y = 2;

const obj = {x, y};

console.log(obj); // {x: 1, y: 2}

 

  • κ³„μ‚°λœ ν”„λ‘œνΌν‹° 이름
    : ES6μ—μ„œλŠ” 객체 λ¦¬ν„°λŸ΄ λ‚΄λΆ€μ„Έμ–΄ κ³„μ‚°λœ ν”„λ‘œνΌν‹° μ΄λ¦„μœΌλ‘œ ν”„λ‘œνΌν‹° ν‚€λ₯Ό 동적 생성할 수 μžˆλ‹€.
const prefix = 'prop';
let i = 0;

const obj = {
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i
};

console.log(obj); // {prop-1: 1, prop-2: 2}

 

  • λ©”μ„œλ“œ μΆ•μ•½ ν‘œν˜„
    : ES6μ—μ„œλŠ” λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  λ•Œ function ν‚€μ›Œλ“œλ₯Ό μƒλž΅ν•œ μΆ•μ•½ ν‘œν˜„μ„ μ‚¬μš©ν•  수 μžˆλ‹€.
const obj = {
  name: 'Lee',
  sayHi() {
    console.log(`Hi ${this.name}`);
  }
};

 

 

 

 

11μž₯ μ›μ‹œ κ°’κ³Ό 객체의 비ꡐ

μ›μ‹œ κ°’

  • λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’
    •  μ›μ‹œ νƒ€μž…μ˜ 값은 읽기 μ „μš© κ°’μœΌλ‘œμ„œ λ³€κ²½ν•  수 μ—†λ‹€.
    • λ³€μˆ˜ 값을 λ³€κ²½ν•˜κΈ° μœ„ν•΄ μ›μ‹œ 값을 μž¬ν• λ‹Ήν•˜λ©΄ μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  μž¬ν• λ‹Ήν•œ 값을 μ €μž₯ν•œ ν›„, λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜λ˜ λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ£Όμ†Œλ₯Ό λ³€κ²½ν•œλ‹€. κ°’μ˜ μ΄λŸ¬ν•œ νŠΉμ„±μ„ λΆˆλ³€μ„±μ΄λΌ ν•œλ‹€.
    • λΆˆλ³€μ„±μ„ κ°–λŠ” μ›μ‹œ 값을 ν• λ‹Ήν•œ λ³€μˆ˜λŠ” μž¬ν• λ‹Ή 이외에 λ³€μˆ˜ 값을 λ³€κ²½ν•  수 μžˆλŠ” 방법이 μ—†λ‹€.
    • μ›μ‹œ 값은 예기치 λͺ»ν•œ λ³€κ²½μœΌλ‘œλΆ€ν„° μžμœ λ‘­λ‹€. μ΄λŠ” λ°μ΄ν„°μ˜ 신뒰성을 보μž₯ν•œλ‹€.
  • λ¬Έμžμ—΄κ³Ό λΆˆλ³€μ„±
    • λ¬Έμžμ—΄μ€ μœ μ‚¬ λ°°μ—΄ κ°μ²΄μ΄λ©΄μ„œ μ΄ν„°λŸ¬λΈ”μ΄λ―€λ‘œ λ°°μ—΄κ³Ό μœ μ‚¬ν•˜κ²Œ 각 λ¬Έμžμ— μ ‘κ·Όν•  수 μžˆλ‹€. λ¬Έμžμ—΄μ˜ 일뢀 λ¬ΈμžλŠ” λ³€κ²½ν•  수 μ—†μ§€λ§Œ λ³€μˆ˜μ— μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ μž¬ν• λ‹Ήν•˜λŠ” 것은 λ¬Όλ‘  κ°€λŠ₯ν•˜λ‹€. μ΄λŠ” κΈ°μ‘΄ λ¬Έμžμ—΄μ„ λ³€κ²½ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ μƒˆλ‘­κ²Œ ν• λ‹Ήν•˜λŠ” 것이기 λ•Œλ¬Έμ΄λ‹€.
  • 값에 μ˜ν•œ 전달
    • λ³€μˆ˜μ— μ›μ‹œ 값을 κ°–λŠ” λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λ©΄ ν• λ‹Ήλ°›λŠ” λ³€μˆ˜μ—λŠ” ν• λ‹Ήλ˜λŠ” λ³€μˆ˜μ˜ μ›μ‹œ 값이 λ³΅μ‚¬λ˜μ–΄ ν• λ‹Ήλœλ‹€. 이λ₯Ό 값에 μ˜ν•œ 전달이라 ν•œλ‹€. μ΄λ•Œ 각 λ³€μˆ˜μ˜ 값은 λ‹€λ₯Έ λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯된 λ³„κ°œμ˜ 값이닀. λ”°λΌμ„œ ν• λ‹Ήλ˜λŠ” λ³€μˆ˜μ˜ 값을 변경해도 ν• λ‹Ήλ°›λŠ” λ³€μˆ˜μ˜ κ°’μ—λŠ” μ–΄λ– ν•œ 영ν–₯도 μ£Όμ§€ μ•ŠλŠ”λ‹€.
    • 사싀 κ°’μ˜ μ˜ν•œ 전달은 값을 μ „λ‹¬ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό μ „λ‹¬ν•œλ‹€. 단, μ „λ‹¬λœ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 톡해 λ©”λͺ¨λ¦¬ 곡간에 μ ‘κ·Όν•˜λ©΄ 값을 μ°Έμ‘°ν•  수 μžˆλ‹€. μ€‘μš”ν•œ 것은 두 λ³€μˆ˜μ˜ μ›μ‹œ 값은 μ„œλ‘œ λ‹€λ₯Έ λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯된 λ³„κ°œμ˜ 값이 λ˜μ–΄ μ–΄λŠ ν•œμͺ½μ—μ„œ μž¬ν• λ‹Ήμ„ 톡해 값을 λ³€κ²½ν•˜λ”λΌλ„ μ„œλ‘œ κ°„μ„­ν•  수 μ—†λ‹€λŠ” 것이닀.
μœ μ‚¬ λ°°μ—΄ κ°μ²΄λž€ 마치 λ°°μ—΄μ²˜λŸΌ 인덱슀둜 ν”„λ‘œνΌν‹° 값에 μ ‘κ·Όν•  수 있고 legnth ν”„λ‘œνΌν‹°λ₯Ό κ°–λŠ” 객체λ₯Όλ§ν•œλ‹€. for문으둜 μˆœνšŒλ„ κ°€λŠ₯ν•˜λ‹€.

 

 

객체

  • λ³€κ²½ κ°€λŠ₯ν•œ κ°’
    • 객체(μ°Έμ‘°) νƒ€μž…μ˜ κ°’, 즉 κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이닀.
    • μ›μ‹œ 값을 ν• λ‹Ήν•œ λ³€μˆ˜λŠ” μ›μ‹œ κ°’ 자체λ₯Ό κ°’μœΌλ‘œ κ°–λŠ”λ‹€. ν•˜μ§€λ§Œ 객체λ₯Ό ν• λ‹Ήν•œ λ³€μˆ˜κ°€ κΈ°μ–΅ν•˜λŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 톡해 λ©”λͺ¨λ¦¬ 곡간에 μ ‘κ·Όν•˜λ©΄ μ°Έμ‘° 값에 μ ‘κ·Όν•  수 μžˆλ‹€. μ°Έμ‘° 값은 μƒμ„±λœ 객체가 μ €μž₯된 λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ£Όμ†Œ, κ·Έ μžμ²΄λ‹€.
    • 객체λ₯Ό ν• λ‹Ήν•œ λ³€μˆ˜μ˜ 경우 `λ³€μˆ˜λŠ” 객체λ₯Ό 가리킀고(μ°Έμ‘°ν•˜κ³ ) μžˆλ‹€`라고 ν‘œν˜„ν•œλ‹€.
    • κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ κ°’μ΄λ―€λ‘œ λ©”λͺ¨λ¦¬μ— μ €μž₯된 객체λ₯Ό 직접 μˆ˜μ •ν•  수 μžˆλ‹€. μ΄λ•Œ 객체λ₯Ό ν• λ‹Ήν•œ λ³€μˆ˜μ— μž¬ν• λ‹Ήμ„ ν•˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ 객체λ₯Ό ν• λ‹Ήν•œ λ³€μˆ˜μ˜ μ°Έμ‘° 값은 λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€.
    • κ°μ²΄λŠ” ꡬ쑰적 단점에 λ”°λ₯Έ λΆ€μž‘μš©μ΄ μžˆλŠ”λ°, μ›μ‹œ κ°’κ³ΌλŠ” λ‹€λ₯΄κ²Œ μ—¬λŸ¬ 개의 μ‹λ³„μžκ°€ ν•˜λ‚˜μ˜ 객체λ₯Ό κ³΅μœ ν•  수 μžˆλ‹€λŠ” 것이닀.
  • 참쑰에 μ˜ν•œ 전달
    • 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜(원본)λ₯Ό λ‹€λ₯Έ λ³€μˆ˜(사본)에 ν• λ‹Ήν•˜λ©΄ μ›λ³Έμ˜ μ°Έμ‘° 값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€. 이λ₯Ό 참쑰에 μ˜ν•œ 전달이라 ν•œλ‹€.
    • 원본과 사본 λ³€μˆ˜κ°€ λͺ¨λ‘ λ™μΌν•œ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” 것은 두 개의 μ‹λ³„μžκ°€ ν•˜λ‚˜μ˜ 객체λ₯Ό κ³΅μœ ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ 원본 λ˜λŠ” 사본 쀑 μ–΄λŠ ν•œμͺ½μ—μ„œ 객체λ₯Ό λ³€κ²½ν•˜λ©΄ μ„œλ‘œ 영ν–₯을 μ£Όκ³ λ°›λŠ”λ‹€.
    • 값에 μ˜ν•œ 전달과 참쑰에 μ˜ν•œ 전달은 μ‹λ³„μžκ°€ κΈ°μ–΅ν•˜λŠ” λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯λ˜μ–΄ μžˆλŠ” 값을 λ³΅μ‚¬ν•΄μ„œ μ „λ‹¬ν•œλ‹€λŠ” λ©΄μ—μ„œ λ™μΌν•˜λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” 참쑰에 μ˜ν•œ 전달은 μ‘΄μž¬ν•˜μ§€ μ•Šκ³  값에 μ˜ν•œ μ „λ‹¬λ§Œμ΄ μ‘΄μž¬ν•œλ‹€κ³  말할 수 μžˆλ‹€.
    • μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 이 같은 λ™μž‘ 방식을 μ„€λͺ…ν•˜λŠ” μ •ν™•ν•œ μš©μ–΄κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 이런 이유둜 κ³΅μœ μ— μ˜ν•œ 전달이라고 ν‘œν˜„ν•˜λŠ” κ²½μš°λ„ μžˆλ‹€.

 

얕은 볡사와 κΉŠμ€ 볡사
객체λ₯Ό ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ°–λŠ” 객체의 경우 얕은 λ³΅μ‚¬λŠ” ν•œ λ‹¨κ³„κΉŒμ§€λ§Œ λ³΅μ‚¬ν•˜λŠ” 것을 λ§ν•˜κ³  κΉŠμ€ λ³΅μ‚¬λŠ” 객체에 μ€‘μ²©λ˜μ–΄ μžˆλŠ” κ°μ²΄κΉŒμ§€ λͺ¨λ‘ λ³΅μ‚¬ν•˜λŠ” 것을 λ§ν•œλ‹€. 얕은 볡사와 κΉŠμ€ λ³΅μ‚¬λ‘œ μƒμ„±λœ κ°μ²΄λŠ” μ°Έμ‘° 값이 λ‹€λ₯Έ λ³„κ°œμ˜ 객체닀. ν•˜μ§€λ§Œ 얕은 λ³΅μ‚¬λŠ” 객체에 μ€‘μ²©λ˜μ–΄ μžˆλŠ” 객체의 경우 μ°Έμ‘° 값을 λ³΅μ‚¬ν•˜κ³  κΉŠμ€ λ³΅μ‚¬λŠ” 객체에 μ€‘μ²©λ˜μ–΄ μžˆλŠ” κ°μ²΄κΉŒμ§€ λͺ¨λ‘ λ³΅μ‚¬ν•΄μ„œ μ›μ‹œ κ°’μ²˜λŸΌ μ™„μ „ν•œ 볡사본을 λ§Œλ“ λ‹€λŠ” 차이가 μžˆλ‹€.

 

 

μ €μž‘μžν‘œμ‹œ
    'note' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [Deep Dive] 14-15μž₯
    • [Deep Dive] 12-13μž₯
    • [Deep Dive] 07-09μž₯
    • [Deep Dive] 04-06μž₯
    66651
    66651
    always awake

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”