🍎객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° (2) This Keyword

πŸ¦₯λŒ€λͺ…사, this λ₯Ό 더 μ‰½κ²Œ

κ°œκ°œμΈμ€ 각자 이름이 있고 사물도 λ§ˆμ°¬κ°€μ§€λ‘œ 이름이 μžˆλ‹€.

이름을 λŒ€μ‹ ν•˜λŠ” λŒ€λͺ…사도 μžˆλ‹€. λ‚˜, λ„ˆ, me.. λ“±λ“±

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 자기 μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” ν‘œν˜„μ€ this 이닀.

μ•„λž˜λŠ” cutiehany λΌλŠ” 아이디λ₯Ό 가진 ν”Œλ ˆμ΄μ–΄μ˜ 이름, ν…ŒνŠΈλ¦¬μŠ€ κ²Œμž„μ˜ 점수, 첫번째 결과와 λ‘λ²ˆμ§Έ κ²°κ³Όλ₯Ό ν•©ν•œ λ©”μ†Œλ“œ λ₯Ό 담은 μ„œλžμ΄λ‹€.

let cutiehany = {
  name : "hany kim",
  first_record : 10, //첫 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  second_record : 20, //두 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  sum : function (f, s) {
    return f + s;
  }
}

console.log("κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 :" , cutiehany.sum(cutiehany.first_record, cutiehany.second_record))
κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 : 30

πŸ”‘λ©”μ†Œλ“œκ°€ μžμ‹ μ΄ μ†ν•΄μžˆλŠ” 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” νŠΉμˆ˜ν•œ ν‚€μ›Œλ“œ

μœ„μ˜ μ˜ˆμ‹œλ₯Ό 톡해 μœ μ €μ˜ κ²Œμž„ μŠ€μ½”μ–΄μ˜ 합계λ₯Ό μ–»μ—ˆλ‹€. 그런데, cutiehany λΌλŠ” 객체 (μ„œλž) μ—λŠ” 10점, 20점 μ΄λΌλŠ” 정보λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ 이미 가지고 μžˆλ‹€. λͺ‡ 점인지 μ•Œκ³  μžˆλŠ”λ° cutiehany.sum ν•¨μˆ˜μ˜ 인자둜 값을 또 ν•œλ²ˆ μ–ΈκΈ‰ν•˜κ³  μžˆλ‹€.

cutiehany.sum(cutiehany.first_record, cutiehany.second_record)

음 그럼 sum μ΄λΌλŠ” λ©”μ†Œλ“œ λ‚΄μ˜ 리턴문을 λ°”κΏ” 볼까?

let cutiehany = {
  name: 'hany kim',
  first_record: 10, //첫 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  second_record: 20, //두 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  sum: function() {
    return first_record + second_record
  },
}

μ•—.. first_record κ°€ μ •μ˜ λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λŠ” μ—λŸ¬λ₯Ό λ‚Έλ‹€.

console.log("κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 :" , cutiehany.sum(first_record, second_record))
Uncaught ReferenceError: first_record is not defined
at <anonymous>:1:43

κ·Έλž˜μ„œ λ‹€μ‹œ λ°”κΎΈμ—ˆλ‹€.

let cutiehany = {
  name: 'hany kim',
  first_record: 10, //첫 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  second_record: 20, //두 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  sum: function() {
    return cutiehany.first_record + cutiehany.second_record;
  },
}

console.log("κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 :" , cutiehany.sum())
κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 : 30

합계λ₯Ό 잘 좜λ ₯ν•˜μ§€λ§Œ λ­”κ°€ 아쉽닀. μœ μ—°ν•¨μ΄ λ–¨μ–΄μ§„λ‹€λŠ” λŠλ‚Œμ΄λ‹€. μ™œλƒν•˜λ©΄? μ„œλžμ΄λ¦„μ„ cutiehany μ—μ„œ goodhany 둜 λ°”κΎΈλ©΄ λ™μž‘μ΄ λ˜μ§€ μ•Šμ„ ν…Œλ‹ˆ λ˜λ‹€μ‹œ return 문을 μˆ˜μ •ν•΄μ•Όλ§Œ ν•œλ‹€.

ν˜Ήμ€, μ•„λž˜μ™€ 같이 μ„œλž 이름을 λ™μ‹œμ— μ—¬λŸ¬κ°œ κ°€μ§ˆ μˆ˜λ„ μžˆλ‹€.

let cutiehany = (prettyhany = {
  name: 'hany kim',
  first_record: 10, //첫 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  second_record: 20, //두 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  sum: function() {
    return cutiehany.first_record + cutiehany.second_record
  },
})

κ·Έλ¦¬ν•˜μ—¬ μ–΄λ–€ λ©”μ†Œλ“œκ°€ 있으면, κ·Έ λ©”μ†Œλ“œκ°€ μžμ‹ μ΄ 속해 μžˆλŠ” 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” νŠΉμˆ˜ν•œ ν‚€μ›Œλ“œλ₯Ό λ§Œλ“€κΈ°λ‘œ μ•½μ†ν–ˆλ‹€κ³  ν•œλ‹€.

πŸ”‘THIS ν‚€μ›Œλ“œ

let cutiehany = {
  name: 'hany kim',
  first_record: 10, //첫 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  second_record: 20, //두 번째 κ²Œμž„μ˜ μŠ€μ½”μ–΄
  sum: function() {
    return this.first_record + this.second_record;
  },
}

console.log("κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 :" , cutiehany.sum())
κ²Œμž„μŠ€μ½”μ–΄μ˜ 합계 : 30

this κ°€ 속해 μžˆλŠ”,

λ©”μ†Œλ“œκ°€ 속해 μžˆλŠ” 객체λ₯Ό 가리킀도둝 μ•½μ†λœ νŠΉμˆ˜ν•œ μ˜ˆμ•½μ–΄κ°€ THIS 이닀.

객체가 λ‚΄λΆ€μ μœΌλ‘œ 가지고 μžˆλŠ” μƒνƒœλ₯Ό (name, firstrecord, secondrecord) νž˜μˆ˜μ—μ„œ μ°Έμ‘°ν•  수 있기 λ•Œλ¬Έμ—,

κΉ”λ”ν•˜κ²Œ ν•¨μˆ˜μ˜ 이름을 ν˜ΈμΆœν•˜λ©΄μ„œ ν•˜κ³ μž ν•˜λŠ” 일을 ν•  수 있게 λ˜μ—ˆλ‹€.

πŸ”₯κ²°λ‘ 

this λŠ” λ©”μ†Œλ“œκ°€ 속해 μžˆλŠ” 객체λ₯Ό λ§ν•˜κ³ , this λ₯Ό 톡해 κ·Έ 객체의 λ‹€λ₯Έ λ³€μˆ˜μ˜ 값을 뢈러올 수 μžˆλ‹€. (μ°Έμ‘°ν•  수 μžˆλ‹€)

객체의 이름이 λ°”λ€Œμ–΄λ„ this λΌλŠ” λŒ€λͺ…사가 μ§€μ‹œν•˜λŠ” κ°μ²΄λŠ” κ°™λ‹€.


Written by@[DotoriMook]
ν”„λ‘ νŠΈμ—”λ“œ μ£Όλ‹ˆμ–΄ 개발자 λ„ν† λ¦¬λ¬΅μ˜ 기술개발 λΈ”λ‘œκ·Έ μž…λ‹ˆλ‹€.

GitHubMediumTwitterFacebook