λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Work/Web

[μžλ°”μŠ€ν¬λ¦½νŠΈ] λ…Έλ‹΅ λ””μžμ΄λ„ˆμ˜ μ½”λ”© 배우기 - console.dir()

μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ ν•¨μˆ˜λ₯Ό 객체 νƒ€μž…μ˜ κ°’μœΌλ‘œ ν‰κ°€ν•œλ‹€κ³  ν•΄. console.dir(); 을 μ‚¬μš©ν•˜λ©΄ 객체둜 μ‚¬μš©λœλ‹€λŠ” κ±Έ μ•Œ 수 μžˆλ‹€λŠ”λ° μ–΄λ–»κ²Œ ν•˜λŠ”κ±°μ•Ό?

 

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λŠ” 사싀 객체 νƒ€μž…μ˜ κ°’μž…λ‹ˆλ‹€. ν•¨μˆ˜λŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œμΌ 뿐만 μ•„λ‹ˆλΌ, ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§ˆ 수 μžˆλŠ” κ°μ²΄λ‘œλ„ μ·¨κΈ‰λ©λ‹ˆλ‹€. 이 λ•Œλ¬Έμ—, μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λŠ” 일급 객체둜 뢈리며, λ‹€λ₯Έ κ°’λ“€μ²˜λŸΌ λ³€μˆ˜μ— μ €μž₯λ˜κ±°λ‚˜ 인자둜 전달될 수 μžˆμŠ΅λ‹ˆλ‹€.

 

이제 console.dir()을 μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜κ°€ 객체둜 ν‰κ°€λ˜λŠ” 것을 ν™•μΈν•˜λŠ” 방법을 μ„€λͺ…ν•΄λ“œλ¦΄κ²Œμš”.

 

console.dir()λž€?

**console.dir()**λŠ” νŠΉμ • 객체의 속성을 트리 ꡬ쑰둜 좜λ ₯ν•΄μ£ΌλŠ” μ½˜μ†” λ©”μ„œλ“œμž…λ‹ˆλ‹€.

이 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜ λ‚΄λΆ€μ˜ ꡬ쑰λ₯Ό 더 μžμ„Ένžˆ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 ν•¨μˆ˜κ°€ λ‹¨μˆœνžˆ μ½”λ“œ 덩어리가 μ•„λ‹ˆλΌ κ°μ²΄λ‘œμ„œ μ–΄λ–€ ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§€λŠ”μ§€λ₯Ό λ³Ό 수 있게 ν•΄μ€λ‹ˆλ‹€.

 

μ˜ˆμ‹œλ‘œ μ•Œμ•„λ³΄κΈ°:

 

λ¨Όμ € ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κ³ , κ·Έ ν•¨μˆ˜λ₯Ό console.dir()둜 좜λ ₯ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

function sayHello() {
  console.log("Hello, world!");
}

// ν•¨μˆ˜ 자체λ₯Ό 객체둜 좜λ ₯해보기
console.dir(sayHello);

 

κ²°κ³Ό:

 

console.dir(sayHello)λ₯Ό μ‚¬μš©ν•˜λ©΄, ν•¨μˆ˜κ°€ 객체처럼 λ‹€μ–‘ν•œ 속성을 κ°€μ§„λ‹€λŠ” 사싀을 μ½˜μ†”μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 트리 ꡬ쑰둜 ν•¨μˆ˜μ— ν¬ν•¨λœ 속성듀이 λ‚˜νƒ€λ‚˜κ³ , κ·Έ 속성 μ€‘μ—μ„œ κ°€μž₯ 자주 λ³Ό 수 μžˆλŠ” 것듀은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

 

μ£Όμš” 속성:

name: ν•¨μˆ˜μ˜ 이름을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

length: ν•¨μˆ˜κ°€ κΈ°λŒ€ν•˜λŠ” **λ§€κ°œλ³€μˆ˜(Parameter)**의 개수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

prototype: ν•¨μˆ˜μ˜ ν”„λ‘œν† νƒ€μž… 객체λ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€. λͺ¨λ“  ν•¨μˆ˜λŠ” prototypeμ΄λΌλŠ” 속성을 κ°€μ§€λ©°, 이 속성은 ν•΄λ‹Ή ν•¨μˆ˜κ°€ μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš©λ  λ•Œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

arguments: 호좜될 λ•Œ μ „λ‹¬λœ 인자λ₯Ό μ°Έμ‘°ν•©λ‹ˆλ‹€ (ES5 μ΄ν›„λŠ” ꢌμž₯λ˜μ§€ μ•ŠμŒ).

caller: ν˜ΈμΆœν•œ ν•¨μˆ˜μ— λŒ€ν•œ μ°Έμ‘°λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

 

ν•¨μˆ˜κ°€ 객체둜 μ‚¬μš©λœλ‹€λŠ” 점:

 

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λŠ” λ‹¨μˆœνžˆ μ½”λ“œ 블둝이 μ•„λ‹ˆλΌ, 객체처럼 ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§ˆ 수 μžˆλŠ” κ°’μ΄λΌλŠ” μ μ—μ„œ κ°•λ ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ν•¨μˆ˜μ— 직접 속성을 μΆ”κ°€ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

function sayHi() {
  console.log("Hi");
}

sayHi.customProperty = "I'm a property of this function!";

console.log(sayHi.customProperty);  // "I'm a property of this function!"
console.dir(sayHi);

 

μ΄λ ‡κ²Œ sayHi ν•¨μˆ˜λŠ” 객체둜 ν‰κ°€λ˜κΈ° λ•Œλ¬Έμ— μƒˆλ‘œμš΄ 속성을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. console.dir(sayHi)둜 ν™•μΈν•˜λ©΄, μš°λ¦¬κ°€ μΆ”κ°€ν•œ customProperty도 ν•¨μˆ˜ 객체의 μ†μ„±μœΌλ‘œ λ‚˜νƒ€λ‚˜λŠ” 것을 확인할 수 μžˆμ–΄μš”.

 

정리:

1. ν•¨μˆ˜λŠ” 객체처럼 λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€. 즉, 속성을 μΆ”κ°€ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. **console.dir()**을 μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜κ°€ μ‹€μ œλ‘œ κ°μ²΄λ‘œμ„œ μ–΄λ–€ 속성을 κ°€μ§€κ³  μžˆλŠ”μ§€ 트리 ꡬ쑰둜 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

3. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λŠ” μΌμ’…μ˜ 객체둜 μ·¨κΈ‰λ˜λ―€λ‘œ, ν•¨μˆ˜μ— λŒ€ν•΄ 좔가적인 μ •λ³΄λ‚˜ ꡬ쑰λ₯Ό 보고 싢을 λ•Œ console.dir()이 μœ μš©ν•©λ‹ˆλ‹€.

 

이 λ°©μ‹μœΌλ‘œ ν•¨μˆ˜κ°€ λ‹¨μˆœν•œ μ½”λ“œ 블둝이 μ•„λ‹ˆλΌ κ°μ²΄λ‘œμ„œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 κ°€μ§€κ³  μžˆλ‹€λŠ” 것을 μ‰½κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€!

 

 

console.dir λž‘ typeof λž‘ 무슨 κΈ°λŠ₯ 차이가 μžˆμ–΄?

 

**console.dir()**와 **typeof**λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ κ°μ²΄λ‚˜ κ°’μ˜ 정보λ₯Ό 확인할 λ•Œ μ‚¬μš©ν•˜λŠ” λ„κ΅¬μ§€λ§Œ, 두 κ°€μ§€λŠ” μ™„μ „νžˆ λ‹€λ₯Έ λͺ©μ μ„ κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έ 차이λ₯Ό μ‰½κ²Œ μ„€λͺ…ν•΄λ“œλ¦΄κ²Œμš”.

 

1. typeof

λͺ©μ : κ°’μ˜ 데이터 νƒ€μž…μ„ ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

λ°˜ν™˜κ°’: typeofλŠ” **λ¬Έμžμ—΄(String)**둜 ν•΄λ‹Ή κ°’μ˜ 데이터 νƒ€μž…μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ‚¬μš© 예: 숫자, λ¬Έμžμ—΄, ν•¨μˆ˜, 객체, λ°°μ—΄, null, undefined λ“± λ‹€μ–‘ν•œ κ°’μ˜ νƒ€μž…μ„ μ•ŒκΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

 

μ˜ˆμ‹œ:

console.log(typeof 42);           // "number"
console.log(typeof "Hello");      // "string"
console.log(typeof true);         // "boolean"
console.log(typeof function(){}); // "function"
console.log(typeof {});           // "object"
console.log(typeof []);           // "object" (배열도 객체둜 μ·¨κΈ‰)
console.log(typeof null);         // "object" (νŠΉμ΄ν•œ 경우)
console.log(typeof undefined);    // "undefined"

 

typeof의 μ£Όμš” νŠΉμ§•:

κ°„λ‹¨ν•œ κ°’μ˜ 데이터 νƒ€μž…μ„ μ•Œ 수 μžˆλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

ν•¨μˆ˜λŠ” **“function”**μ΄λΌλŠ” νƒ€μž…μ„ λ°˜ν™˜ν•˜λŠ”λ°, μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ νŠΉλ³„ν•œ κ²½μš°μž…λ‹ˆλ‹€. 사싀 ν•¨μˆ˜λ„ 객체의 ν•œ μ’…λ₯˜μ΄μ§€λ§Œ, typeofμ—μ„œλ§Œ ν•¨μˆ˜λŠ” “function”이라고 λ°˜ν™˜λ©λ‹ˆλ‹€.

 

2. console.dir()

λͺ©μ : 객체의 속성 ꡬ쑰λ₯Ό 트리 ν˜•μ‹μœΌλ‘œ 좜λ ₯ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

λ°˜ν™˜κ°’: console.dir()은 객체의 λ‚΄λΆ€ ꡬ쑰λ₯Ό μ‹œκ°μ μœΌλ‘œ ν‘œμ‹œν•©λ‹ˆλ‹€. λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ 트리 ν˜•μ‹μœΌλ‘œ 객체의 ν”„λ‘œνΌν‹°μ™€ κ·Έ 값을 탐색할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© 예: κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ μ„ΈλΆ€ κ΅¬μ‘°λ‚˜ 속성을 μ‹œκ°μ μœΌλ‘œ ν™•μΈν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

 

μ˜ˆμ‹œ:

let person = {
  name: "John",
  age: 30,
  greet: function() {
    console.log("Hello!");
  }
};

// console.dir을 μ‚¬μš©ν•΄ 객체의 ꡬ쑰λ₯Ό μ‹œκ°μ μœΌλ‘œ 확인
console.dir(person);

 

console.dir()의 μ£Όμš” νŠΉμ§•:

객체의 ꡬ쑰λ₯Ό 트리 ν˜•νƒœλ‘œ ν‘œμ‹œν•©λ‹ˆλ‹€.

객체의 ν”„λ‘œνΌν‹°, λ©”μ„œλ“œ 등을 λͺ¨λ‘ 확인할 수 있고, 각 ν”„λ‘œνΌν‹°μ˜ νƒ€μž…κ³Ό 값을 μžμ„Ένžˆ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ 특히 μœ μš©ν•˜λ©°, λ³΅μž‘ν•œ κ°μ²΄λ‚˜ DOM μš”μ†Œλ₯Ό 디버깅할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

 

κΈ°λŠ₯ 차이 μš”μ•½:

typeof: κ°’μ˜ 데이터 νƒ€μž…μ„ κ°„λ‹¨νžˆ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. 값을 λΆ„μ„ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” 맀우 기본적인 λ„κ΅¬μž…λ‹ˆλ‹€. ν•¨μˆ˜λŠ” “function”, λ‚˜λ¨Έμ§€λŠ” “object”, “number”, “string” λ“±μ˜ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

console.dir(): κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰와 속성을 트리 ν˜•μ‹μœΌλ‘œ μ‹œκ°ν™”ν•˜μ—¬ ν‘œμ‹œν•©λ‹ˆλ‹€. 값을 νƒμƒ‰ν•˜κ³  ꡬ쑰λ₯Ό λΆ„μ„ν•˜λŠ” 데 맀우 μœ μš©ν•œ λ„κ΅¬μž…λ‹ˆλ‹€.

 

μ˜ˆμ‹œ 비ꡐ:

function example() {
  console.log("This is a function");
}

// typeof둜 ν•¨μˆ˜μ˜ νƒ€μž… 확인
console.log(typeof example);  // "function"

// console.dir둜 ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰 확인
console.dir(example);  // 트리 ν˜•νƒœλ‘œ ν•¨μˆ˜μ˜ 속성 확인 (name, length, prototype λ“±)

 

typeof example은 λ‹¨μˆœνžˆ “function”이라고 λ°˜ν™˜ν•˜μ§€λ§Œ,

console.dir(example)은 ν•¨μˆ˜ 객체의 ν”„λ‘œνΌν‹°(예: name, length, prototype λ“±)와 같은 ꡬ쑰적인 μ„ΈλΆ€ 정보λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

 

μš”μ•½:

**typeof**λŠ” 값을 κ°„λ‹¨ν•˜κ²Œ 뢄석해 데이터 νƒ€μž…μ„ λ¬Έμžμ—΄λ‘œ μ•Œλ €μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

**console.dir**λŠ” κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ μ„ΈλΆ€ ꡬ쑰와 속성을 λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ 트리 ν˜•μ‹μœΌλ‘œ λ³΄μ—¬μ£ΌλŠ” 디버깅 λ„κ΅¬μž…λ‹ˆλ‹€.

 

typeofλŠ” 데이터 νƒ€μž…μ„ ν™•μΈν•˜λŠ” κ°„λ‹¨ν•œ λ„κ΅¬λ‘œ, console.dir은 객체 λ‚΄λΆ€λ₯Ό 깊이 뢄석할 λ•Œ μœ μš©ν•œ 도ꡬ라고 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

 

κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰와 속성이 뭐야?

 

κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰와 속성을 μ΄ν•΄ν•˜λŠ” 것은 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 맀우 μ€‘μš”ν•œ κ°œλ…μž…λ‹ˆλ‹€. 이 μš©μ–΄λ“€μ΄ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ μ„€λͺ…ν•΄λ“œλ¦΄κ²Œμš”!

 

1. 객체의 λ‚΄λΆ€ ꡬ쑰와 속성

 

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ **객체(Object)**λŠ” ν‚€(Key)-κ°’(Value) 쌍으둜 이루어진 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€. μ΄λ•Œ ν‚€λ₯Ό **속성(Property)**라고 λΆ€λ₯΄κ³ , κ·Έ 속성은 **κ°’(Value)**을 κ°€μ§‘λ‹ˆλ‹€. 객체의 λ‚΄λΆ€ κ΅¬μ‘°λŠ” λ°”λ‘œ 이 속성듀과 κ·Έ 값듀이 μ–΄λ–»κ²Œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”μ§€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

 

μ˜ˆμ‹œ: 객체

let person = {
  name: "John",   // 속성 'name'κ³Ό κ·Έ κ°’ 'John'
  age: 30,        // 속성 'age'와 κ·Έ κ°’ 30
  greet: function() {   // 속성 'greet'κ³Ό κ·Έ κ°’μœΌλ‘œ ν•¨μˆ˜κ°€ λ“€μ–΄μžˆμŒ
    console.log("Hello!");
  }
};

 

μœ„ μ½”λ“œμ—μ„œ person 객체의 λ‚΄λΆ€ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό 같은 μ†μ„±λ“€λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

name: “John”μ΄λΌλŠ” 값을 κ°€μ§„ 속성

age: 30μ΄λΌλŠ” 값을 κ°€μ§„ 속성

greet: ν•¨μˆ˜λ₯Ό κ°’μœΌλ‘œ κ°€μ§„ 속성

 

이 속성(ν”„λ‘œνΌν‹°)듀은 객체의 λ‚΄λΆ€μ—μ„œ κ΄€λ¦¬ν•˜λŠ” λ°μ΄ν„°μž…λ‹ˆλ‹€. 객체의 λ‚΄λΆ€ κ΅¬μ‘°λŠ” 객체가 μ–΄λ–€ 속성과 λ©”μ„œλ“œλ₯Ό κ°€μ§€κ³  μžˆλŠ”μ§€, κ·Έ μ†μ„±μ˜ 값이 λ¬΄μ—‡μΈμ§€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

 

console.dir(person)을 μ‚¬μš©ν•˜λ©΄:

console.dir(person);

이 λͺ…령을 μ‹€ν–‰ν•˜λ©΄ λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ 객체의 λ‚΄λΆ€ ꡬ쑰가 트리 ν˜•νƒœλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λ•Œ name, age, greet λ“±μ˜ 속성이 각각의 값을 κ°€μ§€κ³  μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

2. ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰와 속성

 

ν•¨μˆ˜λ„ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 객체둜 μ·¨κΈ‰λ˜κΈ° λ•Œλ¬Έμ—, ν•¨μˆ˜ μžμ²΄λ„ 속성을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉, ν•¨μˆ˜λŠ” μ½”λ“œ 블둝일 뿐만 μ•„λ‹ˆλΌ μ—¬λŸ¬ ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§„ λ³΅μž‘ν•œ ꡬ쑰λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜μ˜ λ‚΄λΆ€ κ΅¬μ‘°λŠ” κ·Έ ν•¨μˆ˜ 객체가 κ°€μ§€κ³  μžˆλŠ” νŠΉμ„±λ“€μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

 

μ˜ˆμ‹œ: ν•¨μˆ˜

function sayHello() {
  console.log("Hello, world!");
}

 

이 ν•¨μˆ˜μ˜ λ‚΄λΆ€ κ΅¬μ‘°μ—λŠ” μ—¬λŸ¬ κ°€μ§€ 속성이 μžˆμŠ΅λ‹ˆλ‹€:

name: ν•¨μˆ˜μ˜ 이름을 λ‚˜νƒ€λ‚΄λŠ” 속성 (이 경우 "sayHello")

length: ν•¨μˆ˜κ°€ 받을 수 μžˆλŠ” λ§€κ°œλ³€μˆ˜μ˜ 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 속성 (이 경우 0)

prototype: ν•΄λ‹Ή ν•¨μˆ˜κ°€ μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš©λ  λ•Œ, μƒˆλ‘œμš΄ 객체에 μ—°κ²°λ˜λŠ” μ†μ„±μž…λ‹ˆλ‹€.

 

console.dir(sayHello)을 μ‚¬μš©ν•˜λ©΄:

console.dir(sayHello);

 

이 λͺ…령을 μ‹€ν–‰ν•˜λ©΄ λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ ν•¨μˆ˜ 객체의 λ‚΄λΆ€ ꡬ쑰가 ν‘œμ‹œλ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ name, length, prototype λ“±μ˜ 속성을 확인할 수 있고, ν•¨μˆ˜κ°€ λ‹¨μˆœν•œ μ½”λ“œ 블둝이 μ•„λ‹ˆλΌ μ—¬λŸ¬ 속성을 κ°€μ§„ κ°μ²΄λΌλŠ” 점을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

ν•¨μˆ˜μ˜ μ£Όμš” 속성:

1. name: ν•¨μˆ˜μ˜ 이름을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

console.log(sayHello.name); // "sayHello"

 

2. length: ν•¨μˆ˜κ°€ 받을 수 μžˆλŠ” λ§€κ°œλ³€μˆ˜μ˜ 수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

console.log(sayHello.length); // 0 (sayHelloλŠ” λ§€κ°œλ³€μˆ˜κ°€ μ—†μŒ)

 

3. prototype: λͺ¨λ“  ν•¨μˆ˜λŠ” prototypeμ΄λΌλŠ” 속성을 κ°€μ§‘λ‹ˆλ‹€. μ΄λŠ” ν•΄λ‹Ή ν•¨μˆ˜κ°€ μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš©λ  λ•Œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. prototype 속성은 μƒˆλ‘œμš΄ 객체λ₯Ό λ§Œλ“€ λ•Œ κ·Έ 객체가 상속받을 μ†μ„±μ΄λ‚˜ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λŠ” κ³³μž…λ‹ˆλ‹€.

 

μš”μ•½: κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰와 속성

객체의 λ‚΄λΆ€ κ΅¬μ‘°λŠ” ν‚€-κ°’ 쌍으둜 이루어진 속성듀이 μ–΄λ–»κ²Œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”μ§€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 각 속성은 객체가 κ°€μ§€κ³  μžˆλŠ” 데이터 λ˜λŠ” **λ©”μ„œλ“œ(ν•¨μˆ˜)**μž…λ‹ˆλ‹€.

ν•¨μˆ˜μ˜ λ‚΄λΆ€ κ΅¬μ‘°λŠ” λ‹¨μˆœν•œ μ½”λ“œ 블둝 μ΄μƒμ˜ 것을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 객체둜 μ·¨κΈ‰λ˜κΈ° λ•Œλ¬Έμ— μ—¬λŸ¬ 속성(name, length, prototype λ“±)을 κ°€μ§ˆ 수 있으며, 이λ₯Ό λ‚΄λΆ€ ꡬ쑰라고 ν•©λ‹ˆλ‹€.

 

console.dir()둜 확인할 수 μžˆλŠ” λ‚΄λΆ€ ꡬ쑰:

κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ λͺ¨λ“  속성과 값듀을 트리 ꡬ쑰둜 λ³΄μ—¬μ€λ‹ˆλ‹€.

객체가 μ–΄λ–»κ²Œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”μ§€, ν•¨μˆ˜κ°€ μ–΄λ–€ νŠΉμ„±μ„ κ°€μ§€κ³  μžˆλŠ”μ§€ μ‹œκ°μ μœΌλ‘œ 탐색할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

이제 κ°μ²΄λ‚˜ ν•¨μˆ˜μ˜ λ‚΄λΆ€ ꡬ쑰와 속성이 무엇을 μ˜λ―Έν•˜λŠ”μ§€ 더 잘 μ΄ν•΄ν•˜μ…¨μ„ κ±°μ˜ˆμš”!