Notice
Recent Posts
Recent Comments
Link
관리 메뉴

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

JDevBlog

31. RegExp

31.1 μ •κ·œ ν‘œν˜„μ‹μ΄λž€? μ •κ·œ ν‘œν˜„μ‹μ€ μΌμ •ν•œ νŒ¨ν„΄μ„ 가진 λ¬Έμžμ—΄μ˜ 집합을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν˜•μ‹ μ–Έμ–΄(formal language) λ‹€. μ •κ·œ ν‘œν˜„μ‹μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 고유 문법이 μ•„λ‹ˆλ©°, λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° 언어와 μ½”λ“œ 에디터에 λ‚΄μž₯λ˜μ–΄ μžˆλ‹€. λ¬Έμžμ—΄μ„ λŒ€μƒμœΌλ‘œ νŒ¨ν„΄ 맀칭 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. νŒ¨ν„΄ 맀칭 κΈ°λŠ₯μ΄λž€ νŠΉμ • νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•˜κ±°λ‚˜ μΆ”μΆœ λ˜λŠ” μΉ˜ν™˜ν•  수 μžˆλŠ” κΈ°λŠ₯을 λ§ν•œλ‹€. λ‹€λ§Œ μ •κ·œν‘œν˜„μ‹μ€ μ£Όμ„μ΄λ‚˜ 곡백을 ν—ˆμš©ν•˜μ§€ μ•Šκ³  μ—¬λŸ¬ 가지 기호λ₯Ό ν˜Όν•©ν•˜μ—¬ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 가독성이 쒋지 μ•Šλ‹€λŠ” λ¬Έμ œκ°€ μžˆλ‹€. 31.2 μ •κ·œ ν‘œν˜„μ‹μ˜ 생성 31.3 RegExp λ©”μ„œλ“œ RegExp.prototype.exec, RegExp.prototype.test, String.prototype.match,..

27. λ°°μ—΄

27.1 λ°°μ—΄μ΄λž€? λ°°μ—΄_array 은 μ—¬λŸ¬ 개의 값을 순차적으둜 λ‚˜μ—΄ν•œ μžλ£Œκ΅¬μ‘°λ‹€. 배열이 가지고 μžˆλŠ” 값을 μš”μ†Œ_element 라고 λΆ€λ₯Έλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  값은 λ°°μ—΄μ˜ μš”μ†Œκ°€ 될 수 μžˆλ‹€. 즉, μ›μ‹œκ°’μ€ λ¬Όλ‘  객체, ν•¨μˆ˜, λ°°μ—΄ λ“± μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ κ°’μœΌλ‘œ μΈμ •ν•˜λŠ” λͺ¨λ“  것은 λ°°μ—΄μ˜ μš”μ†Œκ°€ 될 수 μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ— λ°°μ—΄μ΄λΌλŠ” νƒ€μž…μ€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 배열은 객체 νƒ€μž…μ΄λ‹€. 배열은 λ°°μ—΄ λ¦¬ν„°λŸ΄, Array μƒμ„±μž ν•¨μˆ˜, Array.of, Array.from λ©”μ„œλ“œλ‘œ 생성할 수 μžˆλ‹€. λ°°μ—΄μ˜ μƒμ„±μž ν•¨μˆ˜λŠ” Array이며, λ°°μ—΄μ˜ ν”„λ‘œν† νƒ€μž… κ°μ²΄λŠ” Array.prototype이닀. Array.prototype은 배열을 μœ„ν•œ 빌트인 λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€. 배열은 κ°μ²΄μ§€λ§Œ 일반 κ°μ²΄μ™€λŠ” κ΅¬λ³„λ˜λŠ” λ…νŠΉν•œ 특..

26. ES6 ν•¨μˆ˜μ˜ μΆ”κ°€ κΈ°λŠ₯

26.1 ν•¨μˆ˜μ˜ ꡬ뢄 26.2 λ©”μ„œλ“œ ES6 μ‚¬μ–‘μ—μ„œ λ©”μ„œλ“œλŠ” λ©”μ„œλ“œ μΆ•μ•½ ν‘œν˜„μœΌλ‘œ μ •μ˜λœ ν•¨μˆ˜λ§Œμ„ μ˜λ―Έν•œλ‹€. ES6 μ‚¬μ–‘μ—μ„œ μ •μ˜ν•œ λ©”μ„œλ“œ(μ΄ν•˜ ES6 λ©”μ„œλ“œ)λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†λŠ” non-constructorλ‹€. λ”°λΌμ„œ ES6 λ©”μ„œλ“œλŠ” μƒμ„±μž ν•¨μˆ˜λ‘œμ„œ ν˜ΈμΆœν•  수 μ—†λ‹€. ES6 λ©”μ„œλ“œλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†μœΌλ―€λ‘œ prototype ν”„λ‘œνΌν‹°κ°€ μ—†κ³  ν”„λ‘œν† νƒ€μž…λ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€. ES6 λ©”μ„œλ“œλŠ” μžμ‹ μ„ λ°”μΈλ”©ν•œ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” λ‚΄λΆ€ 슬둯 [[HomeObject]]λ₯Ό κ°–λŠ”λ‹€. super μ°Έμ‘°λŠ” λ‚΄λΆ€ 슬둯 [[HomeObject]]λ₯Ό μ‚¬μš©ν•˜μ—¬ 수퍼클래슀의 λ©”μ„œλ“œλ₯Ό μ°Έμ‘°ν•˜λ―€λ‘œ λ‚΄λΆ€ 슬둯 [[HomeObject]]λ₯Ό κ°–λŠ” ES6 λ©”μ„œλ“œλŠ” super ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. ES6 λ©”μ„œλ“œκ°€ μ•„λ‹Œ ν•¨μˆ˜λŠ”..

25. 클래슀

25.1 ν΄λž˜μŠ€λŠ” ν”„λ‘œν† νƒ€μž…μ˜ 문법적 섀탕인가? 사싀 ν΄λž˜μŠ€λŠ” ν•¨μˆ˜μ΄λ©° κΈ°μ‘΄ ν”„λ‘œν† νƒ€μž… 기반 νŒ¨ν„΄μ„ 클래슀 기반 νŒ¨ν„΄μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 문법적 섀탕_syntactic sugar 이라고 λ³Ό μˆ˜λ„ μžˆλ‹€. ν΄λž˜μŠ€λŠ” μƒμ„±μž ν•¨μˆ˜λ³΄λ‹€ μ—„κ²©ν•˜λ©° μƒμ„±μž ν•¨μˆ˜μ—μ„œλŠ” μ œκ³΅ν•˜μ§€ μ•ŠλŠ” κΈ°λŠ₯도 μ œκ³΅ν•œλ‹€. ν΄λž˜μŠ€λŠ” μƒμ„±μž ν•¨μˆ˜ 기반의 객체 생성 방식보닀 κ²¬κ³ ν•˜κ³  λͺ…λ£Œν•˜λ‹€(κ·Έλ ‡λ‹€κ³  ν΄λž˜μŠ€κ°€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ‹€λ₯Έ 객체 생성 방식보닀 μš°μ›”ν•˜λ‹€κ³  μƒκ°ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€). 특히 클래슀의 extends와 super ν‚€μ›Œλ“œλŠ” 상속 관계 κ΅¬ν˜„μ„ λ”μš± κ°„κ²°ν•˜κ³  λͺ…λ£Œν•˜κ²Œ ν•œλ‹€. μƒˆλ‘œμš΄ 객체 생성 λ©”μ»€λ‹ˆμ¦˜μœΌλ‘œ λ³΄λŠ” 것이 μ’€ 더 ν•©λ‹Ήν•˜λ‹€. 25.2 클래슀 μ •μ˜ 클래슀λ₯Ό ν‘œν˜„μ‹μœΌλ‘œ μ •μ˜ν•  수 μžˆλ‹€λŠ” 것은 ν΄λž˜μŠ€κ°€ κ°’μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 일급 객체..

23. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ_execution context λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리λ₯Ό λ‹΄κ³  μžˆλŠ” 핡심 κ°œλ…μ΄λ‹€. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό λ°”λ₯΄κ²Œ μ΄ν•΄ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μŠ€μ½”ν”„λ₯Ό 기반으둜 μ‹λ³„μžμ™€ μ‹λ³„μžμ— λ°”μΈλ”©λœ κ°’(μ‹λ³„μž 바인딩)을 κ΄€λ¦¬ν•˜λŠ” 방식 ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜λŠ” 이유 ν΄λ‘œμ €μ˜ λ™μž‘ 방식 νƒœμŠ€ν¬ 큐와 ν•¨κ»˜ λ™μž‘ν•˜λŠ” 이벀트 ν•Έλ“€λŸ¬ 비동기 처리의 λ™μž‘ 방식 을 이해할 수 μžˆλ‹€. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλž€ μ‹€ν–‰ν•  μ½”λ“œμ— μ œκ³΅ν•  ν™˜κ²½ 정보듀을 λͺ¨μ•„놓은 객체 이닀. 23.1 μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž… 이 4가지 νƒ€μž…μ˜ μ†ŒμŠ€μ½”λ“œλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•œλ‹€. μ†ŒμŠ€μ½”λ“œ(μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œexecutable code)λ₯Ό 4가지 νƒ€μž…μœΌλ‘œ κ΅¬λΆ„ν•˜λŠ” μ΄μœ λŠ” μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž…μ— 따라 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜λŠ” κ³Όμ •κ³Ό 관리 λ‚΄μš©μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ΄λ‹€. 1. μ „μ—­ μ½”λ“œ μ „μ—­..

22. this

22.1 this ν‚€μ›Œλ“œ λ™μž‘μ„ λ‚˜νƒ€λ‚΄λŠ” λ©”μ„œλ“œλŠ” μžμ‹ μ΄ μ†ν•œ 객체의 μƒνƒœ, 즉 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜κ³  λ³€κ²½ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. μ΄λ•Œ λ©”μ„œλ“œκ°€ μžμ‹ μ΄ μ†ν•œ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•˜λ €λ©΄ λ¨Όμ € μžμ‹ μ΄ μ†ν•œ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. 객체 λ¦¬ν„°λŸ΄μ€ circle λ³€μˆ˜μ— ν• λ‹Ήλ˜κΈ° 직전에 ν‰κ°€λœλ‹€. λ”°λΌμ„œ getDiameter λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ˜λŠ” μ‹œμ μ—λŠ” 이미 객체 λ¦¬ν„°λŸ΄μ˜ 평가가 μ™„λ£Œλ˜μ–΄ 객체가 μƒμ„±λ˜μ—ˆκ³  circle μ‹λ³„μžμ— μƒμ„±λœ 객체가 ν• λ‹Ήλœ 이후닀. λ”°λΌμ„œ λ©”μ„œλ“œ λ‚΄λΆ€μ—μ„œ circle μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€. 자기 μžμ‹ μ΄ μ†ν•œ 객체λ₯Ό μž¬κ·€μ μœΌλ‘œ μ°Έμ‘°ν•˜λŠ” 방식은 μΌλ°˜μ μ΄μ§€ μ•ŠμœΌλ©° λ°”λžŒμ§ν•˜μ§€λ„ μ•Šλ‹€. μƒμ„±μž ν•¨μˆ˜ λ°©μ‹μœΌλ‘œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 경우λ₯Ό μƒκ°ν•΄λ³΄μž. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성..