Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μžλ°”μŠ€ν¬λ¦½νŠΈ (11)

JDevBlog

18. ν•¨μˆ˜μ™€ 일급 객체

18.1 일급 객체 λ‹€μŒκ³Ό 같은 쑰건을 λ§Œμ‘±ν•˜λŠ” 객체λ₯Ό 일급 객체라 ν•œλ‹€. 무λͺ…μ˜ λ¦¬ν„°λŸ΄λ‘œ 생성할 수 μžˆλ‹€. 즉, λŸ°νƒ€μž„μ— 생성이 κ°€λŠ₯ν•˜λ‹€. λ³€μˆ˜λ‚˜ 자료ꡬ쑰(객체, λ°°μ—΄ λ“±)에 μ €μž₯ν•  수 μžˆλ‹€. ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ— 전달할 수 μžˆλ‹€. ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν•¨μˆ˜λŠ” λ‹€μŒ μ˜ˆμ œμ™€ 같이 μœ„μ˜ 쑰건을 λͺ¨λ‘ λ§Œμ‘±ν•˜λ―€λ‘œ 일급 객체닀. ν•¨μˆ˜κ°€ 일급 κ°μ²΄λΌλŠ” 것은 ν•¨μˆ˜λ₯Ό 객체와 λ™μΌν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” μ˜λ―Έλ‹€. κ°μ²΄λŠ” κ°’μ΄λ―€λ‘œ ν•¨μˆ˜λŠ” κ°’κ³Ό λ™μΌν•˜κ²Œ μ·¨κΈ‰ν•  수 μžˆλ‹€. λ”°λΌμ„œ ν•¨μˆ˜λŠ” 값을 μ‚¬μš©ν•  수 μžˆλŠ” κ³³(λ³€μˆ˜ ν• λ‹Ήλ¬Έ, 객체의 ν”„λ‘œνΌν‹° κ°’, λ°°μ—΄μ˜ μš”μ†Œ, ν•¨μˆ˜ 호좜의 인수, ν•¨μˆ˜ λ°˜ν™˜λ¬Έ)이라면 μ–΄λ””μ„œλ“ μ§€ λ¦¬ν„°λŸ΄λ‘œ μ •μ˜ν•  수 있으며 λŸ°νƒ€μž„(runtime)에 ν•¨μˆ˜ 객체둜 ν‰κ°€λœλ‹€. 18.2 ν•¨μˆ˜ 객..

17. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성

17.1 Object μƒμ„±μž ν•¨μˆ˜ new μ—°μ‚°μžμ™€ ν•¨κ»˜ Object μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ 빈 객체λ₯Ό μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€. 빈 객체λ₯Ό μƒμ„±ν•œ 이후 ν”„λ‘œνΌν‹° λ˜λŠ” λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ 객체λ₯Ό μ™„μ„±ν•  수 μžˆλ‹€. μƒμ„±μž ν•¨μˆ˜(constructor)λž€ new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜μ—¬ 객체(μΈμŠ€ν„΄μŠ€)λ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•œλ‹€. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ μƒμ„±λœ 객체λ₯Ό μΈμŠ€ν„΄μŠ€(instance)라 ν•œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” Object μƒμ„±μž ν•¨μˆ˜ 이외에도, String, Number, Boolean, Function, Array, Date, RegExp, Promise λ“±μ˜ 빌트인(built-in) μƒμ„±μž ν•¨μˆ˜λ₯Ό μ œκ³΅ν•œλ‹€. λ°˜λ“œμ‹œ Object μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ 빈 객체λ₯Ό 생성해야 ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. 객체λ₯Ό μƒμ„±ν•˜λŠ” 방법은 객체 ..

16. ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ

16.1 λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œ λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ˜ κ΅¬ν˜„ μ•Œκ³ λ¦¬μ¦˜μ„ μ„€λͺ…ν•˜κΈ° μœ„ν•΄ ECMAScript μ‚¬μ–‘μ—μ„œ μ‚¬μš©ν•˜λŠ” μ˜μ‚¬ ν”„λ‘œνΌν‹°(pseudo property) 와 μ˜μ‚¬ λ©”μ„œλ“œ(pseudo method) λ‹€. ECMAScript 사양에 λ“±μž₯ν•˜λŠ” 이쀑 λŒ€κ΄„ν˜Έλ‘œ 감싼 이름듀이 λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œλ‹€. λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ˜ λ‚΄λΆ€ λ‘œμ§μ΄λ―€λ‘œ μ›μΉ™μ μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œμ— μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•˜κ±°λ‚˜ ν˜ΈμΆœν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€. 단, 일뢀 λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œμ— ν•œν•˜μ—¬ κ°„μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλŠ” μˆ˜λ‹¨μ„ μ œκ³΅ν•œλ‹€. λͺ¨λ“  κ°μ²΄λŠ” [[Prototype]] μ΄λΌλŠ” λ‚΄λΆ€ μŠ¬λ‘―μ„ κ°–λŠ”λ‹€. 이 λ‚΄λΆ€ μŠ¬λ‘―μ€ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ˜ λ‚΄λΆ€ 둜직..

12. ν•¨μˆ˜

12.1 ν•¨μˆ˜λž€? ν•¨μˆ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 핡심 κ°œλ…μ΄λ‹€. 또 λ‹€λ₯Έ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 핡심 κ°œλ…λ“€μΈ μŠ€μ½”ν”„, μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ, ν΄λ‘œμ €, μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성, λ©”μ„œλ“œ, this, ν”„λ‘œν† νƒ€μž…, λͺ¨λ“ˆν™” 등이 λͺ¨λ‘ ν•¨μˆ˜μ™€ κΉŠμ€ 관련이 μžˆλ‹€. ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ ν•¨μˆ˜λŠ” 일련의 과정을 λ¬Έ(statement) 으둜 κ΅¬ν˜„ν•˜κ³  μ½”λ“œ λΈ”λ‘μœΌλ‘œ κ°μ‹Έμ„œ ν•˜λ‚˜μ˜ μ‹€ν–‰ λ‹¨μœ„λ‘œ μ •μ˜ν•œ 것 이닀. ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μž…λ ₯을 μ „λ‹¬λ°›λŠ” λ³€μˆ˜λ₯Ό λ§€κ°œλ³€μˆ˜(parameter), μž…λ ₯을 인수(argument), 좜λ ₯을 λ°˜ν™˜κ°’(return value) 이라 ν•œλ‹€. λ˜ν•œ ν•¨μˆ˜λŠ” 값이며, μ—¬λŸ¬ 개 μ‘΄μž¬ν•  수 μžˆμœΌλ―€λ‘œ νŠΉμ • ν•¨μˆ˜λ₯Ό κ΅¬λ³„ν•˜κΈ° μœ„ν•΄ μ‹λ³„μžμΈ ν•¨μˆ˜ 이름을 μ‚¬μš©ν•  수 μžˆλ‹€. 12.2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유 ν•¨μˆ˜λŠ” ν•„μš”ν•  λ•Œ μ—¬λŸ¬ 번 호..

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

μ›μ‹œ νƒ€μž…μ˜ κ°’, 즉 μ›μ‹œ 값은 λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 값이닀. 이에 λΉ„ν•΄ 객체(μ°Έμ‘°) νƒ€μž…μ˜ κ°’, 즉 κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이닀. μ›μ‹œ 값을 λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ λ³€μˆ˜(ν™•λ³΄λœ λ©”λͺ¨λ¦¬ 곡간) μ—λŠ” μ‹€μ œ 값이 μ €μž₯λœλ‹€. 이에 λΉ„ν•΄ 객체λ₯Ό λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ λ³€μˆ˜(ν™•λ³΄λœ λ©”λͺ¨λ¦¬ 곡간) μ—λŠ” μ°Έμ‘° 값이 μ €μž₯λœλ‹€. μ›μ‹œ 값을 κ°–λŠ” λ³€μˆ˜λ₯Ό λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ μ›λ³Έμ˜ μ›μ‹œ 값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€. 이λ₯Ό 값에 μ˜ν•œ 전달이라 ν•œλ‹€. 이에 λΉ„ν•΄ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜λ₯Ό λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ μ›λ³Έμ˜ μ°Έμ‘° 값이 λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λœλ‹€. 이λ₯Ό 전달이라 ν•œλ‹€. 11.1 μ›μ‹œ κ°’ λ³€μˆ˜λŠ” ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν™•λ³΄ν•œ λ©”λͺ¨λ¦¬ 곡간 자체 λ˜λŠ” κ·Έ λ©”λͺ¨λ¦¬ 곡간을 μ‹λ³„ν•˜κΈ° μœ„ν•΄ 뢙인 이름이닀. 값은 λ³€μˆ˜μ— μ €μž₯된 λ°μ΄ν„°λ‘œμ„œ ν‘œν˜„μ‹μ΄ ν‰κ°€λ˜μ–΄ μƒμ„±λœ κ²°κ³Όλ₯Ό..

10. 객체 λ¦¬ν„°λŸ΄

10.1 κ°μ²΄λž€? μ›μ‹œ νƒ€μž…μ€ 단 ν•˜λ‚˜μ˜ κ°’λ§Œ λ‚˜νƒ€λ‚΄μ§€λ§Œ 객체 νƒ€μž…μ€ λ‹€μ–‘ν•œ νƒ€μž…μ˜ κ°’(μ›μ‹œ κ°’ λ˜λŠ” λ‹€λ₯Έ 객체)을 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ κ΅¬μ„±ν•œ 볡합적인 μžλ£Œκ΅¬μ‘°λ‹€. λ˜ν•œ μ›μ‹œ νƒ€μž…μ˜ κ°’, 즉 μ›μ‹œ 값은 λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’μ΄μ§€λ§Œ 객체 νƒ€μž…μ˜ κ°’, 즉 κ°μ²΄λŠ” λ³€κ²½ κ°€λŠ₯ν•œ 값이닀. ν”„λ‘œνΌν‹° 값이 ν•¨μˆ˜μΌ 경우, 일반 ν•¨μˆ˜μ™€ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ λ©”μ„œλ“œλΌ λΆ€λ₯Έλ‹€. κ°μ²΄λŠ” 객체의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°’(ν”„λ‘œνΌν‹°)κ³Ό ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜κ³  μ‘°μž‘ν•  수 μžˆλŠ” λ™μž‘(λ©”μ„œλ“œ)을 λͺ¨λ‘ 포함할 수 있기 λ•Œλ¬Έμ— μƒνƒœμ™€ λ™μž‘μ„ ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ ꡬ쑰화할 수 μžˆμ–΄ μœ μš©ν•˜λ‹€. 10.2 객체 λ¦¬ν„°λŸ΄μ— μ˜ν•œ 객체 생성 μΈμŠ€ν„΄μŠ€? μΈμŠ€ν„΄μŠ€λž€ ν΄λž˜μŠ€μ— μ˜ν•΄ μƒμ„±λ˜μ–΄ λ©”λͺ¨λ¦¬μ— μ €μž₯된 싀체λ₯Ό λ§ν•œλ‹€. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ κ°μ²΄λŠ” ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€λ₯Ό ν¬ν•¨ν•œ κ°œλ…μ΄λ‹€. ..