SlideShare ist ein Scribd-Unternehmen logo
1 von 38
www.javaspecialist.co.kr
www.javaspecialist.co.kr
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋“ค์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜ ํŠน์ง•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ๋‹ค.
www.javaspecialist.co.kr
www.javaspecialist.co.kr์ž๋ฐ” ์ „๋ฌธ๊ฐ€ ๊ทธ๋ฃน
๊ฐœ์š”
ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ
์žฅ์ ๊ณผ ๋‹จ์ 
๊ธฐ๋ณธ ๊ตฌ์กฐ
์‹คํ–‰ ์œ„์น˜
์˜ˆ์•ฝ์–ด
๊ธฐ๋ณธ ๋ฌธ๋ฒ•
๋ฐ์ดํ„ฐ ํƒ€์ž…
๊ฐ์ฒด
๋ฐฐ์—ด
ํ•จ์ˆ˜
์—ฐ์‚ฐ์ž
์ œ์–ด๋ฌธ
์˜ˆ์™ธ์ฒ˜๋ฆฌ
์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค
๋Ÿฌ
๋ฒ„๋ธ”๋ง๊ณผ ์บก์ฒ˜๋ง
Objects
www.javaspecialist.co.kr
1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ์š”
โ€ข ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ
โ€“ ํด๋ผ์ด์–ธํŠธ์ชฝ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ๋„ท์Šค์ผ€์ดํ”„
์‚ฌ์—์„œ LiveScript๋ฅผ ๋ฐœํ‘œํ–ˆ๊ณ . ์ดํ›„ ์ฌ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์‚ฌ์™€ ๊ณต๋™์œผ๋กœ ๋ผ์ด๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™•์žฅํ•œ
JavaScript๋ฅผ ํƒ„์ƒ์‹œ์ผฐ๋‹ค.
โ€“ ํ˜„์žฌ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ECMA์˜ Technical Committee 39(TC-39)์—์„œ ์ •์˜ํ•œ
ECMAScript(ECMA-262) ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•œ๋‹ค.
โ€ข ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ
โ€“ ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๋‹ค.
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ํŠน์„ฑ ์ƒ ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋ฉฐ ๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ผํ•œ ์‹ค
ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
โ€ข ๋ฌด๋ฃŒ์ด๋ฉฐ, ์‰ฝ๊ณ  ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€“ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ์ง์ ‘ html๋ฌธ์„œ์— ์‚ฝ์ž…๋˜์–ด, ๋ธŒ๋ผ์šฐ์ €์—์„œ htmlํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ๊ฐ™์ด ํ•ด์„๋˜๊ณ  ์‹ค
ํ–‰๋œ๋‹ค.
โ€“ ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์‹คํ–‰๋˜๊ธฐ์— ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ผ ํ•„์š” ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€“ ์ปดํŒŒ์ผ ๊ณผ์ •์ด ํ•„์š” ์—†์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๋งŒ ์žˆ๋‹ค๋ฉด ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
โ€“ ํƒ€์ž…์ฒดํฌ๊ฐ€ ์ฒ ์ €ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜๋“ค์˜ ํƒ€์ž…์— ์žˆ์–ด์„œ ์ฐจ์ด๋ฅผ ๋‘์ง€ ์•Š๋Š”๋‹ค.
โ€“ ํด๋ž˜์Šค ์ •์˜๊ฐ€ ์•ˆ๋˜๋ฉฐ, ํด๋ž˜์Šค ์ƒ์† ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‹  ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ
๋‹ค.
โ€ข ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ž€?
โ€“ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ผ์ธ ๋‹จ์œ„๋กœ ํ•ด์„(์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋˜์–ด ์‹คํ–‰๋˜๋Š” ์–ธ์–ด.
โ€“ ๋ณ„๋„์˜ ์ปดํŒŒ์ผ ๊ณผ์ •์ด ์—†๋‹ค.
โ€“ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•ด ์ค„ ํ”„๋กœ๊ทธ๋žจ์ด ๋ณ„๋„๋กœ ํ•„์š”ํ•˜๋‹ค.
โ€“ HTML ๋ฌธ์„œ ๋‚ด์—์„œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” <script>์™€ </script>์‚ฌ์ด์— ์ž‘์„ฑํ•œ๋‹ค.
www.javaspecialist.co.kr
2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์ง•
โ€“ ์›น ๋ฌธ์„œ(HTML)์— ๋ผ์›Œ์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด
โ€“ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ๋ฌธ์„œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ž
๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ด์„๊ธฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
โ€“ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์˜ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๋‹ค.
โ€“ ๋ช‡ ๊ฐ€์ง€ ๊ฐ์ฒด ์ง€ํ–ฅ ์š”์†Œ๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ƒ์†์˜ ์ด์ 
์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋กœ์ธํ•ด ๋‹คํ˜•์„ฑ ์‚ฌ์šฉ์— ์žˆ์–ด์„œ๋„ ์ œ์•ฝ์ด ์žˆ๋‹ค.
โ€“ ๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•จ์ˆ˜๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋Šฅ
โ€“ ์ผ๋ฐ˜์ ์œผ๋กœ HTML๋กœ๋งŒ ์ž‘์„ฑ๋œ ์›น ๋ฌธ์„œ๋Š” ๋‹จ์ˆœํžˆ ์ •๋ณด๋งŒ์„ ์ œ๊ณตํ•  ๋ฟ, ์›น ๋ฌธ์„œ์— ๋™์ ์œผ๋กœ
์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ ์ธ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.
โ€“ HTLM ๋ฌธ์„œ ๋‚ด์—์„œ ํ”„๋กœ๊ทธ๋žจ์ ์ธ ์š”์†Œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ค ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋ฐ˜์‘์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น ๋ฌธ์„œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ฌธ์„œ ๋‚ด ํŠน์ • ๋ถ€๋ถ„์„ ํด๋ฆญํ–ˆ๊ฑฐ๋‚˜ ์›น ๋ฌธ์„œ๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„์— ์›น ๋ฌธ์„œ
์—`์„œ ์–ด๋–ค ์ž‘์—…์ด ์ง„ํ–‰๋˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ๋ฌธ์„œ ๋‚ด์˜ HTML ์š”์†Œ์˜ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ธฐ ์ „์— ๋จผ์ € ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธ
ํ•ด ์„œ๋ฒ„์˜ ์ž‘์—… ๋ถ€๋‹ด๋„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด์–ด ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ
์šฐ์ €์— ๋งž๋Š” ์›น ๋ฌธ์„œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋งž์ถคํ˜• ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์— ์ฟ ํ‚ค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ
๋‹ค.
www.javaspecialist.co.kr
3. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์žฅ์ ๊ณผ ๋‹จ์ 
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์žฅ์ 
โ€“ ์ž‘์—… ์†๋„๊ฐ€ ๋น ๋ฆ„
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” HTML ํŒŒ์ผ ๋‚ด์—์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
โ€ข ์ž๋ฐ”, C/C++ ๋“ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ์ ์ธ ํ‹€์„ ๊ทธ๋Œ€๋กœ ๊ฐ–์ถ”๊ณ  ์žˆ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ๋ฉด
์‰ฝ๊ฒŒ ์–ธ์–ด๋ฅผ ์ตํž ์ˆ˜ ์žˆ๋‹ค.
โ€“ ํ”Œ๋žซํผ ๋…๋ฆฝ์ 
โ€“ ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์›€
โ€ข ๊ฐ์ฒด์˜ ๋‹จ์ˆœํ™”๋กœ ์ธํ•œ ํ”„๋กœ๊ทธ๋žจ ์ œ์ž‘ ์šฉ์ด
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‹จ์ 
โ€“ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค. ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด์ด๋ฏ€๋กœ ๋ˆ„๊ตฌ๋“  ๋ณต์‚ฌํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚น์„ ํ†ตํ•ด ์†Œ์Šค์ฝ”๋“œ ๋…ธ์ถœ์„ ์–ด๋Š ์ •๋„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ์Œ
โ€“ Packer - http://dean.edwards.name/packer/
โ€“ Unpacker - http://www.strictly-software.com/unpacker#unpacker
โ€“ ํ•œ์ •๋œ ๊ฐ์ฒด์™€ ๊ฐ์ฒด ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
โ€ข C++์˜ STL, Java์˜ API ์ฒ˜๋Ÿผ ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
โ€ข ์ œํ•œ๋œ ๊ฐ์ฒด์™€ ๊ฐ์ฒด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณต์žกํ•œ ๊ฒŒ์ž„, ๋ฉ”์‹ ์ €, ์ฑ„ํŒ…๋ฐฉ ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋žจ์€
๊ฐœ๋ฐœ์ด ์–ด๋ ต๋‹ค.
www.javaspecialist.co.kr
4. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ
โ€“ <script> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML ๋ฌธ์„œ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
โ€“ type ์†์„ฑ๊ฐ’์œผ๋กœ"text/javascript"๋ฅผ ์ž…๋ ฅ(HTML5 ์—์„œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ)
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="euc-kr" />
5. <title>javascript-base.html</title>
6. </head>
7. <body>
8. <hr>
9. <h1>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๊ตฌ์กฐ</h1>
10. <hr>
11. <script type="text/javascript">
12. document.write("<h2>์•ˆ๋…•ํ•˜์„ธ์š”!</h2>");
13. </script>
14. </body>
15. </html>
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌธ
๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด์„œ
๊ผญ HTML ๋ฌธ์„œ๊ฐ€ ํ•„
์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
Firebug์™€ ๋ช‡๋ช‡
Extension ๋งŒ ์žˆ์–ด๋„
๊ฐ€๋Šฅํ•˜๋‹ค.
www.javaspecialist.co.kr
5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์œ„์น˜ (1/3) โ€“ head ํƒœ๊ทธ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ <head> ํƒœ๊ทธ ์˜์—ญ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒฝ์šฐ
โ€“ ํด๋ผ์ด์–ธํŠธ ์ž‘์—… ์ „ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ง€์ •ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ
โ€“ <body> ํƒœ๊ทธ ์˜์—ญ์—์„œ๋„ ๊ณตํ†ต์ ์œผ๋กœ ๋ฐ˜์‘
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="euc-kr" />
5. <title>javascript-head.html</title>
6. <script type="text/javascript">
7. window.onload = function( ){
8. alert("์ด ๋ฉ”์‹œ์ง€ ์ƒ์ž๋Š” onload ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ณด์ž…๋‹ˆ๋‹ค.");
9. };
10. document.write("<h2>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์„ธ๊ณ„์— ์˜ค์‹  ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ
๋‹ค.</h2>");
11. </script>
12. </head>
13. <body>
14. <hr><h1>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ head ์š”์†Œ ์˜์—ญ์— ์œ„์น˜ํ–ˆ์„ ๋•Œ</h1><hr>
15. </body>
16. </html>
www.javaspecialist.co.kr
5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์œ„์น˜ (2/3) โ€“ body ํƒœ๊ทธ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ <body> ํƒœ๊ทธ ์˜์—ญ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒฝ์šฐ
โ€“ <body> ํƒœ๊ทธ ์˜์—ญ์— "document.write( )"ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ํ‘œํ˜„
โ€“ HTML ์š”์†Œ๊ฐ€ ํŒŒ์‹ฑ๋œ ๋‹ค์Œ ์‹คํ–‰๋˜๋„๋ก ํ•  ๋•Œ
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="euc-kr" />
5. <title> javascript-body.html </title>
6. </head>
7. <body>
8. <hr><h2>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ body ์š”์†Œ ์˜์—ญ ๋‚ด์— ์œ„์น˜ํ–ˆ์„ ๋•Œ</h2><hr>
9. <script type="text/javascript">
10. document.write("์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌธ์žฅ");
11. </script>
12. <p> xhtml์˜ ๋ฌธ์žฅ </p>
13. </body>
14. </html>
www.javaspecialist.co.kr
5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์œ„์น˜ (3/3) โ€“ ์™ธ๋ถ€ํŒŒ์ผ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ
โ€“ <head> ํƒœ๊ทธ ๋ถ€๋ถ„์ด๋“  <body> ํƒœ๊ทธ ๋ถ€๋ถ„์ด๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๊ณณ์— ์‚ฝ์ž…
โ€“ ์™ธ๋ถ€ ํŒŒ์ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ์ž๋Š” "js"
โ€“ script element์˜ src ์†์„ฑ๊ฐ’์ด ํ˜ธ์ถœํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŒŒ์ผ๋ช…
โ€“ defer ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด HTML ๋ฌธ์„œ๊ฐ€ ํŒŒ์‹ฑ๋œ ๋‹ค์Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ
โ€“ HTML5 ์—๋Š” async ์†์„ฑ๋„ ์ถ”๊ฐ€๋˜์—ˆ์Œ
โ€“ HTML5์—๋Š” type ์†์„ฑ ์ƒ๋žต ๊ฐ€๋Šฅํ•จ
โ€“ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์•ˆ์—๋Š” <script> ํƒœ๊ทธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Œ
<script type="text/javascript" src="ํ˜ธ์ถœํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋ช….js"></script>
www.javaspecialist.co.kr
6. ์˜ˆ์•ฝ์–ด(ECMAScript ํ‘œ์ค€)
โ€ข Keyword
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw
delete in try
โ€ข FutureReservedWord
class enum extends super
const export import interface
implements let static yield
public protected package private
์ž๋ฐ” ์–ธ์–ด์—์„œ ๋ณผ
์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ๋“ค
์ž…๋‹ˆ๋‹ค.
www.javaspecialist.co.kr
7. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œํ˜„ ๋ฐฉ์‹
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋ฌธ
โ€ข ๋ฌธ์žฅ ๋์— ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ์ž…๋ ฅํ•œ๋‹ค.
โ€ข ๊ตฌ๋ฌธ ์‚ฌ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ์ƒ๋žตํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‚˜ ์˜ค๋ฅ˜๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ถŒ์žฅํ•œ๋‹ค.
โ€ข ;์„ ๋„ฃ์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ Packing ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฃผ์„
โ€ข // : ํ•œ ์ค„ ์ฃผ์„ ์ฒ˜๋ฆฌ. ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋์— ์‚ฌ์šฉ
โ€ข /* ~ */ : ํ•œ ์ค„ ์ด์ƒ์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ
โ€“ ๋ณ€์ˆ˜ ์„ ์–ธ
โ€ข var ํ‚ค์›Œ๋“œ ์ด์šฉ
โ€ข var ์—†์ด ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌ๋ฉด ์ „์—ญ๋ณ€์ˆ˜(์ตœ์ƒ์œ„ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„)๊ฐ€ ๋จ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„(scope)๋Š” ์ฝ”๋“œ ๋ธ”๋ก({ })์ด ์•„๋‹Œ ํ•จ์ˆ˜ ๋‹จ์œ„ ์ž„
1. function hello(name) {
2. console.log("Say Hello~ " + name);
3. var a = 10;
4. b = 20;
5. };
6. hello("KilDong");
7. console.log(a); //Reference
Error
8. console.log(b); //20 ์ถœ๋ ฅ๋จ
www.javaspecialist.co.kr
8. ๋ฐ์ดํ„ฐ ํƒ€์ž… (1/3)- Primitive data type
โ€ข Primitive data type
โ€“ ์ˆซ์ž(number)
โ€ข ์ •์ˆ˜, ์‹ค์ˆ˜ ๊ตฌ๋ถ„ ์—†์Œ
โ€ข ๋ชจ๋“  ์ˆ˜๊ฐ€ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ๋ณ€์ˆ˜์— ์ €์žฅ๋จ
โ€ข Infinity, NaN๋„ ์ˆซ์ž์ž„ ๏ƒ  ์ด๋“ค์€ ๋น„๊ตํ•  ๊ฒฝ์šฐ isFinite(), isNaN()์œผ๋กœ ๋น„๊ตํ•ด์•ผ ํ•จ.
โ€“ ๋ฌธ์ž์—ด(string)
โ€ข ๋ฌธ์ž, ๋ฌธ์ž์—ด ๊ตฌ๋ถ„ ์—†์Œ
โ€ข ์Œ๋”ฐ์˜ดํ‘œ("") ๋กœ ๋ฌถ์–ด๋„ ๋˜๊ณ , ํ™‘๋”ฐ์˜ดํ‘œ(โ€˜โ€™)๋กœ ๋ฌถ์–ด๋„ ๋จ
โ€ข var s = "Hello World"; //๋ฆฌํ„ฐ๋Ÿด๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
โ€ข var o = new String("Hello World") //์ƒ์„ฑ์ž ์ด์šฉ
โ€ข String(new Date()); //new ์—†์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ(๋ฌธ์ž์—ด ์•„๋‹˜)
โ€“ ๋ถˆ๋ฆฐ(boolean) ํƒ€์ž…
โ€ข true/false
โ€ข ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ 0, null, ""(๋นˆ ๋ฌธ์ž์—ด), false, undefined, NaN์œผ๋กœ ํŒ๋‹จ๋˜๋ฉด false, ๋‚˜๋จธ์ง„ true
โ€ข ๋™๋“ฑ ๋น„๊ต๋ฅผ ํ•  ๊ฒฝ์šฐ ํƒ€์ž…๋„ ๊ฐ™์ด ๋น„๊ตํ•ด ์ฃผ๋Š” === ์‚ฌ์šฉ์„ ๊ถŒ์žฅ
โ€“ undefined
โ€ข ์ •์˜๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฃจํŠธ๊ฐ์ฒด์˜ ์†์„ฑ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์Œ
โ€ข ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ํ• ๋‹น๋˜๊ธฐ ์ „์— undefined๊ฐ€ ๋จ
โ€ข ๋ถˆ๋ฆฐํ˜•์€ false๋กœ ๋ฐ˜ํ™˜, ์ˆซ์ž๋Š” NaN, ๋ฌธ์ž์—ด์€ "undefined"๋กœ ๋ฐ˜ํ™˜๋จ
โ€“ null
โ€ข ๊ฐ์ฒด๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ž„.
โ€ข ํ‚ค์›Œ๋“œ์ž„
www.javaspecialist.co.kr
8. ๋ฐ์ดํ„ฐ ํƒ€์ž… (2/3) - Reference data type
โ€ข Reference data type
โ€“ ๊ฐ์ฒด
โ€ข {}๋กœ ์ƒ์„ฑ
โ€ข ์ƒ์„ฑ์žํ•จ์ˆ˜ ์ด์šฉ
โ€“ ๋ฐฐ์—ด
โ€ข [ ]
โ€“ ํ•จ์ˆ˜
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ž˜์Šค๊ฐ€ ์—†๋‹ค.
โ€ข ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
โ€“ ๊ธฐํƒ€
โ€ข ๋‚ ์งœ(Date), ์ •๊ทœ์‹(RegExp) ๋“ฑ ๋‚ด์žฅ ๊ฐ์ฒด
โ€ข Window ๊ฐ์ฒด
โ€ข Document ๊ฐ์ฒด
โ€ข Element, Node ๊ฐ์ฒด ๋“ฑ
www.javaspecialist.co.kr
8. ๋ฐ์ดํ„ฐ ํƒ€์ž… (3/3) - ๊ฐ์ฒด
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋Š” ๋ชจ๋“  ๊ฒƒ(Everything)์„ ์˜๋ฏธํ•œ๋‹ค.
โ€“ ๋ฌธ์ž์—ด(String), ์ˆซ์ž(Number), ๋ฐฐ์—ด(Array), ํ•จ์ˆ˜(Function) ๋“ฑ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‚ด์žฅ(built-in) ๊ฐ์ฒด์™€ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค.
โ€“ ๋‚ด์žฅ ๊ฐ์ฒด
โ€ข Number, String, Date, Array, Boolean, Math, RegExp, JSON
โ€“ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด
โ€ข Object์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
โ€“ person = new Object();
โ€“ person.name = "JinKyoung";
โ€“ person.age = 30;
โ€ข ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
โ€“ function Person(name, age) {
โ€“ this.name = name; //์†์„ฑ ์ถ”๊ฐ€
โ€“ this.age = age;
โ€“ this.setName = function(newName) { //๋ฉ”์„œ๋“œ ์ถ”๊ฐ€
โ€“ this.name = newName;
โ€“ }
โ€“ }
โ€“ var friend = new Person("KikDong", 25);
โ€ข ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
โ€“ var person = { name: "Sunsin", age: 35};
www.javaspecialist.co.kr
9. ์—ฐ์‚ฐ์ž
โ€ข Punctuator
{ } ( ) [ ]
. ; , < > <=
>= == != === !==
+ - * % ++ --
<< >> >>> & | ^
! ~ && || ? :
= += -= *= %= <<=
>>= >>>= &= |= ^=
โ€ข DivPunctuator
/ /=
โ€ข ์กฐ๊ฑด ์—ฐ์‚ฐ์ž(์‚ผํ•ญ์—ฐ์‚ฐ์ž)
โ€“ ์กฐ๊ฑด์‹ ? ์ฒ˜๋ฆฌ๋‚ด์šฉ1 : ์ฒ˜๋ฆฌ๋‚ด์šฉ2
โ€“ ์กฐ๊ฑด ๊ฒฐ๊ณผ๊ฐ’์ด ์ฐธ(true)์ด๋ฉด"์ฒ˜๋ฆฌ๋‚ด์šฉ 1", ๊ฑฐ์ง“(false)์ด๋ฉด"์ฒ˜๋ฆฌ๋‚ด์šฉ 2" ๋ฐ˜ํ™˜
===์™€ !==๋Š” ํƒ€
์ž…๋„ ๋น„๊ตํ•˜๋Š” ์—ฐ
์‚ฐ์ž์ด๋‹ค.
&&์™€ ||์˜ ๊ฒฐ๊ณผ๋Š”
true/false๊ฐ€ ์•„๋‹ˆ๋‹ค.
์™ผ์ชฝ ํ•ญ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ
ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋Œ€์ž…๋ฉ
๋‹ˆ๋‹ค.
๋ณดํ†ต์˜ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š”
์—ฐ์‚ฐ์ž์™€ ๊ธฐํ˜ธ๋“ค์ž…๋‹ˆ๋‹ค.
๋‹จํ•ญ์—ฐ์‚ฐ์ž, ๋‹คํ•ญ์—ฐ์‚ฐ์ž, ๋น„ํŠธ์—ฐ
์‚ฐ์ž, ๋Œ€์ž…์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ๋“ฑ
์ด ์žˆ๋‹ค.
www.javaspecialist.co.kr
10. ์ œ์–ด๋ฌธ (1/3)
โ€ข ์กฐ๊ฑด๋ฌธ
โ€“ if() ๋ฌธ
โ€ข if(์กฐ๊ฑด์‹) { }else { }
โ€“ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž
โ€ข ์กฐ๊ฑด์‹ ? ์‹1 : ์‹2
โ€“ switch() ๋ฌธ
โ€ข switch(a) {
โ€ข case a>2 :
โ€ข //์‹คํ–‰๋ฌธ;
โ€ข break;
โ€ข case a==2 :
โ€ข //์‹คํ–‰๋ฌธ;
โ€ข break;
โ€ข default :
โ€ข //์‹คํ–‰๋ฌธ;
โ€ข }
โ€ข ์กฐ๊ฑด ํ‰๊ฐ€ ๊ทœ์น™
โ€“ ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ 0, null, ""(๋นˆ ๋ฌธ์ž์—ด), false, undefined, NaN์œผ๋กœ ํŒ๋‹จ๋˜๋ฉด false, ๋‚˜๋จธ์ง„ true
โ€“ || ์™€ && ๋‘ ์กฐ๊ฑด์‹์„ ๋น„๊ตํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” true ๋˜๋Š” false ๊ฐ€ ์•„๋‹Œ ์™ผ์ชฝํ•ญ ๋˜๋Š” ์šฐ
์ธก ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค.
โ€ข ||์€ false๊ฐ€ ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋จ(๋ชจ๋‘ false๋กœ ํŒ๋‹จ๋  ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํ•ญ์˜ ๊ฐ’ ๋ฐ˜ํ™˜)
โ€ข && ์€ false๋กœ ํŒ๋‹จ ๋œ ์ฒซ ๋ฒˆ์งธ ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜(false๋กœ ํŒ๋‹จ๋˜๋Š” ํ•ญ์ด ์—†์„ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํ•ญ์˜
๊ฐ’ ๋ฐ˜ํ™˜)
www.javaspecialist.co.kr
10. ์ œ์–ด๋ฌธ (2/3)
โ€ข ๋ฐ˜๋ณต์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ์œผ๋กœ for, for/in, while, do/while๋ฌธ์ด ์žˆ๋‹ค.
โ€ข for ๋ฌธ
โ€“ ์‚ฌ์šฉ๋ฒ•
โ€ข for(๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”; ๋ฐ˜๋ณต ์—ฌ๋ถ€ ํ…Œ์ŠคํŠธ; ๋ณ€์ˆ˜ ๊ฐ’ ์ฆ๊ฐ€) {
โ€ข //์‹คํ–‰์ฝ”๋“œ ๋ธ”๋ก
โ€ข }
โ€ข for/in ๋ฌธ
โ€“ ์‚ฌ์šฉ๋ฒ•
โ€ข for(๋ณ€์ˆ˜ in ๊ฐ์ฒด) {
โ€ข //์‹คํ–‰ ์ฝ”๋“œ ๋ธ”๋ก
โ€ข }
โ€“ ์‹คํ–‰ ์ฝ”๋“œ ๋ธ”๋ก์—์„œ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด [ ]์‚ฌ์šฉ ๊ฐ€๋Šฅ
โ€“ for/in ๋ฌธ์œผ๋กœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์†์„ฑ์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Object ๊ฐ์ฒด์— ์›๋ž˜ ์ •์˜๋œ ์†
์„ฑ์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
1. var myObj = { p1:โ€˜aโ€™, p2:โ€˜bโ€™}; //๊ฐ์ฒด ์ •์˜
2. var result=โ€˜โ€™;
3. for(var prop in myObj) {
4. result += โ€˜์†์„ฑ๋ช…: โ€™ + prop + โ€˜, ๊ฐ’: โ€™ + myObj[prop] + โ€˜nโ€™;
5. }
1. var ar = [โ€˜aโ€™, โ€˜bโ€™]; //๋ฐฐ์—ด ์ •์˜
2. var result=โ€˜โ€™;
3. for(var i in ar) {
4. result += โ€˜์ธ๋ฑ์Šค: โ€™ + i + โ€˜, ๊ฐ’: โ€™ + ar[i] + โ€˜nโ€™;
5. }
www.javaspecialist.co.kr
10. ์ œ์–ด๋ฌธ (3/3)
โ€ข while๋ฌธ
โ€“ var i=0;
โ€“ while(i<10) {
โ€“ i++;
โ€“ }
โ€ข do/while ๋ฌธ
โ€“ var i=0;
โ€“ do {
โ€“ i++;
โ€“ } while(i<10);
โ€ข ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ var ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์—ญ
๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.(ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์ฐธ์กฐ ๊ฐ€๋Šฅ)
www.javaspecialist.co.kr
11. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ€ข try/catch/finally
โ€“ ์‚ฌ์šฉ๋ฒ•
โ€ข try {
โ€ข //์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ํฌํ•จ
โ€ข }catch(error) {
โ€ข //์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ
โ€ข }finally {
โ€ข //ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ ํฌํ•จ
โ€ข }
โ€“ try ๋ธ”๋ก์ด ์žˆ์œผ๋ฉด ์ตœ์†Œํ•œ catch ๋ธ”๋ก์ด๋‚˜ finally ๋ธ”๋ก ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
โ€“ try ๋ธ”๋ก๋งŒ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ ๋ชปํ•œ๋‹ค.
โ€ข throw
โ€“ ์‚ฌ์šฉ๋ฒ•
โ€ข throw ์˜ˆ์™ธ๊ฐ์ฒด
โ€“ ์˜ˆ
โ€ข if("์˜ˆ์™ธ ๋ฐœ์ƒ์กฐ๊ฑด์ด ๋˜๋ฉด") {
โ€ข throw new Error("์˜ˆ์™ธ ๋ฉ”์‹œ์ง€");
โ€ข throw "์˜ˆ์™ธ ๋ฉ”์‹œ์ง€";
โ€ข throw 4;
โ€ข }
์†์„ฑ๊ณผ ๋ฉ”์„œ
๋“œ
์„ค๋ช…
message ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ ์„ค๋ช…
name
์˜ˆ์™ธ ํƒ€์ž…์„ ๋ฌธ์ž์—ด๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Error(์˜ˆ์™ธ ๊ฐ์ฒด์˜ ์ตœ
์ƒ์œ„ ๊ฐ์ฒด), EvalError, SyntaxError, URIError, TypeError
๋“ฑ์ด ์žˆ๋‹ค.
toString()
ํ‘œ์ค€์—๋Š” ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์—์„œ ๊ตฌํ˜„ํ•  ํ•„
์š” ์—†๋‹ค.
message, name์œผ๋กœ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค.
Error ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ
try {
console.log(a);
}catch(error) {
console.info(error.message);
console.info(error.name);
}finally {
console.info("return
resource");
}
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (1/6) - ๊ธฐ๋ณธ๊ฐœ๋…
โ€ข ํ•จ์ˆ˜์˜ ์ •์˜
โ€“ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ํŠน์ • ์ž‘์—… ์ˆ˜ํ–‰ ์œ„ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ•˜๋‚˜์˜ ๋‹จ์œ„
โ€“ ์˜ˆ์•ฝ์–ด โ€˜functionโ€™์œผ๋กœ ์‹œ์ž‘
โ€“ ํ•จ์ˆ˜์˜ ์‹œ์ž‘๊ณผ ๋์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐํ˜ธ: ์ค‘๊ด„ํ˜ธ({ })
โ€“ ๋ฐ˜ํ™˜ํ˜•(return type), ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)์— ๋Œ€ํ•œ ์ž๋ฃŒํ˜• ์ž…๋ ฅ ์•ˆ ํ•จ
โ€“ ํ•จ์ˆ˜ ์ •์˜ ๊ตฌ๋ฌธ ๊ตฌ์กฐ
โ€ข function name(parameters) {
โ€ข //statements;
โ€ข }
โ€“ function : ํ•จ์ˆ˜ ์ •์˜ํ•˜๋Š” ํ‚ค์›Œ๋“œ
โ€“ name : ํ•จ์ˆ˜ ์ด๋ฆ„, ์„ ์–ธ๊ณผ ๋™์‹œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ์ƒ๋žต ๊ฐ€๋Šฅ(anonymous function)
โ€“ parameters : ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜, ๊ฐ’์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ƒ๋žต ๊ฐ€๋Šฅ
โ€“ statements : ํ•จ์ˆ˜์˜ ๋ชธ์ฒด, ์ง€์—ญ๋ณ€์ˆ˜ ์ •์˜ ๋ฐ ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
ยป ์ง€์—ญ๋ณ€์ˆ˜ ์ •์˜ ์‹œ var ์„ ์–ธ ์•ˆ ํ•˜๋ฉด ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋จ
โ€“ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ตฌ๋ฌธ ๊ตฌ์กฐ
โ€ข name(arguments);
โ€“ name: ํ•จ์ˆ˜๋ช…
โ€“ arguments: ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌํ•ด์•ผ ํ•  ๊ฐ’
โ€“ Lexical ํŠน์„ฑ
โ€ข ์ฝ”๋“œ ๊ทธ๋Œ€๋กœ์˜ ํ™˜๊ฒฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ •์˜ํ•œ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜์˜ ๊ฒ€์ƒ‰์ด ์ผ์–ด๋‚œ๋‹ค.
โ€ข ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์„ ์–ธ๋œ ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๋•Œ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š๊ณ  ์ฐธ์กฐํ•˜๋ฉด undef
ined
var data=10;
function calc() {
console.log(data);
var data=20;
}
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (2/6) - ํ•จ์ˆ˜์˜ ์—ญํ• 
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€
๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜์˜ ์—ญํ• ์„ ๋‹ค์Œ 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€“ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋ฃจํ‹ด์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜
โ€ข new ์—†์ด ์‚ฌ์šฉ
โ€“ ๊ฐ’์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜
โ€ข ์ธ์ž๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ
โ€ข ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅ
โ€ข ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
โ€“ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ. ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜
โ€ข new์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• 
โ€ข ํ•จ์ˆ˜ ์ด๋ฆ„ ์ฒซ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ •์˜ํ•œ๋‹ค.(๊ฐ•์ œ์‚ฌํ•ญ์€ ์•„๋‹˜)
๏ถ ์ž๊ธฐ ์ฐธ์กฐ ํ˜ธ์ถœ ํŒจํ„ด
โ€“ ํ•จ์ˆ˜ ์ •์˜์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋„๋ก ํ•จ
โ€“ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ธ์ž๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ.
โ€“ (function() {
โ€“ console.log("ํ•จ์ˆ˜ ์ •์˜์™€ ํ•จ๊ป˜ ์‹คํ–‰๋จ");
โ€“ })();
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (3/6) - ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„
+ prototype :
- ํ•จ์ˆ˜ ๋‚ด var ๋ณ€์ˆ˜
ํ•จ์ˆ˜ ๋‚ด ์ฝ”๋“œ
(๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ)
+ constructor :
+ ๋Ÿฐํƒ€์ž„์‹œ ์ถ”๊ฐ€/์ œ๊ฑฐ๋˜๋Š”
๋ณ€์ˆ˜
๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„
์‹คํ–‰์ฝ”๋“œ ๋ธ”๋ก
ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด
๊ณต๊ฐœ ๋ณ€์ˆ˜ ์˜์—ญ
ํ•จ์ˆ˜ ๊ฐ์ฒด
ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋กœ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ
์œผ๋ฏ€๋กœ
add.Description = "์„ค๋ช…"; ์ด๋ผ
๊ณ  ํ•˜๋ฉด Description ๋ณ€์ˆ˜๊ฐ€ ๊ณต
๊ฐœ๋ณ€์ˆ˜ ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค.
function add(x, y) {
return x+y;
}
๋ผ๊ณ  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ–ˆ์„ ๋•Œ
-x : undefined
-y : undefined
return x+y;
ํ•จ์ˆ˜๋ช….prototype
ํ•จ์ˆ˜๋ช….๊ณต๊ฐœ๋ณ€์ˆ˜๋ช…ํ•จ์ˆ˜๋ช…()
ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด์— ์ถ”๊ฐ€๋œ ๋ฉค
๋ฒ„๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์†๋ฐ›๋Š”๋‹ค.
์ด ๋•Œ ํ”„๋กœํ† ํƒ€์ž… ๋ฉค๋ฒ„์˜ ๋น„ ๋Œ€
์นญ์„ฑ์— ์ฃผ์˜ํ•˜์ž.
ํ•จ์ˆ˜๋ช….prototype.๋ฉค๋ฒ„ = ๊ฐ’;
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (3/6) - ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„
function Person() {
var name;
var age;
}
var person1 = new Person();
person1.name = "ํ™๊ธธ๋™";
person1.age = 30;
console.log(person1.name + " " + person1.age);
Person.prototype.city = "์„œ์šธ";//๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์† ๋ฐ›๋Š”๋‹ค.
console.log(person1.city);
person1.city = "๋‰ด์š•";//์ธ์Šคํ„ด์Šค์— city๋ผ๋Š” ๋ณ€์ˆ˜ ์ถ”๊ฐ€๋œ๋‹ค.
//ํ”„๋กœํ† ํƒ€์ž…์˜ ๋ณ€์ˆ˜ ๊ฐ’์ด ์ˆ˜์ •๋˜์ง€ ์•Š๋Š”๋‹ค.
//ํ”„๋กœํ† ํƒ€์ž… ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ”„๋กœํ† ํƒ€์ž…๊ฐ์ฒด๋ฅผ
//ํ†ตํ•ด์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.
console.log(Person.prototype.city);//์„œ์šธ ์ถœ๋ ฅ๋จ. ๋‰ด์š•์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
//ํ”„๋กœํ† ํƒ€์ž… ๋ณ€์ˆ˜์˜ ๋น„ ๋Œ€์นญ์„ฑ์ด๋ผ ๋ถ€๋ฅธ๋‹ค.
Person.job = "ํ”„๋กœ๊ทธ๋ž˜๋จธ";
console.log(Person.job);//๊ณต๊ฐœ๋ณ€์ˆ˜ ์˜์—ญ
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (4/6) - ํ•จ์ˆ˜ ์ •์˜ ๋ฐฉ๋ฒ•
โ€ข ํ•จ์ˆ˜ ์ •์˜
โ€“ function add(x, y) {
โ€“ return x+y;
โ€“ }
โ€ข ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ
โ€“ var add = function(x, y) {
โ€“ return x+y;
โ€“ }
โ€ข Function ์ƒ์„ฑ์ž ์‚ฌ์šฉ
โ€“ var add = new Function("x", "y", "return x+y");
โ€“ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋งˆ์ง€๋ง‰ ์ธ์ž๊ฐ€ ์‹คํ–‰ ์ฝ”๋“œ๊ฐ€ ๋œ๋‹ค.
โ€ข ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ํ•จ์ˆ˜ ์ธ์ž
โ€“ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ์— ์ธ์ž์˜ ์ˆ˜๋Š” ์ •์˜์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋จ
โ€“ ๋งค๊ฐœ๋ณ€์ˆ˜๋ณด๋‹ค ์ธ์ž์˜ ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋‚˜๋จธ์ง„ undefined๋กœ ํ• ๋‹น๋จ
โ€“ ์ธ์ž์˜ ์ˆ˜๊ฐ€ ๋” ๋งŽ์œผ๋ฉด ๋‚จ๋Š” ์ธ์ž๋Š” ๋ฌด์‹œ๋จ
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (5/6) - arguments
โ€ข arguments
โ€“ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด, Object ํƒ€์ž…
โ€“ arguments.callee ์†์„ฑ
โ€ข ์ต๋ช… ํ•จ์ˆ˜(anonymous function)์—์„œ ์ž์‹ ์„ ์ฐธ์กฐํ•จ
โ€“ arguments.length
โ€ข ์ „๋‹ฌ๋˜๋Š” ์ธ์ž์˜ ๊ฐœ์ˆ˜
var add = function() {
var sum=0
console.log(arguments.length);
for(var data in arguments) {
//console.log(arguments[data]);
sum = sum + arguments[data];
}
return sum;
}
console.log(add(10, 20, 30, 40));
console.log(add(10, 20, 30));
var fact = (function(n) {
//console.log(arguments.callee);
var self = arguments.callee;
if(n==0)
return 1;
else
return (n * self(n-1));
})(10);
console.log(fact)//3628800
www.javaspecialist.co.kr
12. ํ•จ์ˆ˜ (6/6) - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋กœ์ €
โ€ข ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜
โ€ข ์˜ˆ)
โ€“ function outer() {
โ€“ var x=0;
โ€“ return function() {
โ€“ return ++x;
โ€“ }
โ€“ }
โ€“ var f = outer();
โ€“ var g = outer();
โ€“ f(); //1
โ€“ f(); //2
โ€“ g(); //1
โ€“ g(); //2
+ prototype :
- x : 0;
return ++x; -x : 0
outer ํด๋กœ์ €
f
return ++x;
-x : 0
return ++x;
g
f์™€ g๋Š” ๋…๋ฆฝ๋œ ๋ณ€
์ˆ˜ ๊ณต๊ฐ„์„ ๊ฐ€์ง„ ์ธ
์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค
.
ํด๋กœ์ €๋ฅผ ํฌํ•จํ•˜๋ฉด
๋ฉค๋ฒ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†
์Œ
www.javaspecialist.co.kr
13. ์ด๋ฒคํŠธ (1/5) - ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
โ€ข ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ •์˜ ๋ฐ ์ข…๋ฅ˜
โ€“ ์ด๋ฒคํŠธ(event)
โ€ข ์‚ฌ์šฉ์ž์— ์˜ํ•œ ํŠน์ • ํ–‰์œ„์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ์ž์™€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ ์ฒ˜๋ฆฌ
์˜ ์š”์ธ
โ€“ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ, ํ•˜์ดํผ๋งํฌ ์œ„์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์œ„์น˜ ์‹œํ‚ฌ ๊ฒฝ์šฐ ๋“ฑ์— ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
โ€“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(Event Handler)
โ€ข ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ
โ€ข ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด
โ€ข HTML ๋ฌธ์„œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋Š” onxxx ์‹์œผ๋กœ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์†์„ฑ์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.
โ€“ ํด๋ฆญ ์ด๋ฒคํŠธ๋Š” onclick ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ด์šฉ
โ€ข ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง
โ€“ HTML ํƒœ๊ทธ์˜ ์†์„ฑ์œผ๋กœ ๋“ฑ๋ก
โ€ข <input type="checkbox" name="options" value="true" onclick="handler()">
โ€“ function handler() { โ€ฆ; } ํ•จ์ˆ˜๊ฐ€ <script> ํƒœ๊ทธ ์•ˆ์— ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•จ.
โ€“ ์š”์†Œ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋กœ ๋“ฑ๋ก
โ€ข document.getElementById("options").onclick = function() {โ€ฆ;}
โ€ข ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
โ€“ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ event ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋จ, ํ•จ์ˆ˜ ์ •์˜์‹œ ์„ ์–ธ์•ˆํ•ด๋„ ์ž๋™ ์ „๋‹ฌ๋จ
โ€“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ฝ”๋“œ์—์„œ false ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์š”์†Œ์˜ ๊ธฐ๋ณธ์ ์ธ ์•ก์…˜์„ ์ทจ์†Œ์‹œํ‚จ๋‹ค.
โ€ข event.preventDefault();์™€ ๊ฐ™์Œ
www.javaspecialist.co.kr
13. ์ด๋ฒคํŠธ (1/5) - ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
function handler() {
console.log("์ด๋ฒคํŠธ ๋ฐœ์ƒํ•จ");
}
window.onload = function() {
var pElement = document.querySelector("#two");
pElement.onclick = function() {//ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ event๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ evnet
๊ฐ์ฒด ์ „๋‹ฌ๋จ
console.log(pElement.textContent);
console.log(event)
}
var naverElement = document.querySelector("#naver");
naverElement.onclick = function(event) {
event.preventDefault();//์—˜๋ฆฌ๋จผํŠธ์˜ ๊ธฐ๋ณธ ์•ก์…˜์„ ์ทจ์†Œ์‹œํ‚ด
console.log(naverElement.href);
//return false;//์—˜๋ฆฌ๋จผํŠธ์˜ ๊ธฐ๋ณธ ์•ก์…˜์„ ์ทจ์†Œ์‹œํ‚ด
}
//var threeElement = document.querySelector("#three");
var threeElement = document.getElementById("three");
threeElement.addEventListener("click", function() {
console.log(threeElement.textContent);
});
};
<p onclick="handler()">์ฒซ ๋ฒˆ์งธ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.</p>
<p id="two">๋‘ ๋ฒˆ์งธ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.</p>
<a href="http://www.naver.com" id="naver">๋„ค์ด๋ฒ„
</a>
<p id="three">์„ธ ๋ฒˆ์งธ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.</p>
body ํƒœ๊ทธ์˜ ๋‚ด์šฉ
www.javaspecialist.co.kr
13. ์ด๋ฒคํŠธ (2/5) - DOM Level 2 ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง
โ€ข W3C์—์„œ ํ‘œ์ค€ํ™” ํ•œ DOM Level2 ์ด๋ฒคํŠธ ๋ชจ๋ธ
โ€ข ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ํ‘œ์ค€์ ์ธ ๋ฐฉ๋ฒ•์„ ๋น„๋กฏํ•ด ์ด๋ฒคํŠธ ์ „ํŒŒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ํ‘œ์ค€,
์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋“ฑ์ด ํฌํ•จ๋ผ ์žˆ๋‹ค.
โ€ข DOM Level2๋ฅผ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” DOM Level 0(์•ž์—์„œ ์„ค๋ช…ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ)์„ ์ง€์›ํ•œ๋‹ค.
โ€“ ์ต์Šคํ”Œ๋กœ๋Ÿฌ 8์ดํ•˜๋Š” DOM Level2๋ฅผ ์ง€์›์•ˆํ•จ
โ€ข ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง๊ณผ ์ด๋ฒคํŠธ๋ฒ„๋ธ”๋ง
โ€“ ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง : ํƒ€๊ฒŸ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์œ„ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๊นŒ์ง€ ์ฒ˜๋ฆฌ๋˜๋Š”
ํ˜„์ƒ.
โ€“ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง : ํƒ€๊ฒŸ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒ์œ„ ์š”์†Œ์— ์ด๋ฒคํŠธ๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ํ˜„์ƒ.
โ€ข ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง
โ€“ elem.addEventListener(string type, Function handler, useCapture);
โ€ข type : ํ•ธ๋“ค๋ง ํ•˜๊ณ  ์‹ถ์€ ์ด๋ฒคํŠธ, DOM Level0 ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ on์„ ๋นผ๋ฉด๋œ๋‹ค.
โ€ข handler : ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜. ์ธ์ž๋กœ ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ์ „
๋‹ฌ๋œ๋‹ค.
โ€ข useCapture : true์ผ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์„ ์บก์ฒ˜๋ง ๋‹จ๊ณ„์—์„œ๋งŒ ํ˜ธ์ถœ๋˜๋„๋ก ํ•œ๋‹ค. false(
๋””ํดํŠธ)์ผ ๊ฒฝ์šฐ ํƒ€๊ฒŸ ๋‹จ๊ณ„์™€ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ํ˜ธ์ถœ๋œ๋‹ค.
โ€“ elem.removeEventListener(string type, Function handler, useCapture);
โ€ข addEventListener๋กœ ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ œ๊ฑฐ
โ€“ event.stopPropagation();
โ€ข ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง์—์„œ๋Š” ํƒ€๊ฒŸ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฐ€์žฅ ์ƒ์œ„ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.
โ€ข ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ, ํƒ€๊ฒŸ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋งŒ ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•จ
www.javaspecialist.co.kr
13. ์ด๋ฒคํŠธ (3/5) - ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง/๋ฒ„๋ธ”๋ง ์˜ˆ
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="UTF-8">
5. <title>Insert title here</title>
6. <script>
7. window.onload = function() {
8. var elements = document.querySelectorAll("div");
9. for(var i=0; i<elements.length; i++) {
10. elements[i].addEventListener("click", function(event) {
11. console.log(this.getAttribute("id"));
12. event.stopPropagation();
13. }, true);
14. };
15. };
16. </script>
17. </head>
18. <body>
19. <div id="a">AAAAAA
20. <div id="b">BBBBBB
21. <div id="c">CCCCCC
22. </div>
23. </div>
24. </div>
25. </body>
26. </html>
<div>A
</div>
<div>B
</div>
<div>C
</div>
useCaptur
e
stopPropa
gation
Aํด๋ฆญ Bํด๋ฆญ Cํด๋ฆญ ๋น„๊ณ 
true yes a a a
true no a a b a b c
false yes a b c ๊ถŒ์žฅ
false no a b a c b a
www.javaspecialist.co.kr
13. ์ด๋ฒคํŠธ (4/5) - Event ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ
์†์„ฑ/๋ฉ”์„œ๋“œ ์„ค๋ช…
type
๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์˜ ํƒ€์ž…. "click", "keydown"์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์†
์„ฑ๋ช…๊ณผ ๋™์ผํ•œ ๋ฌธ์ž์—ด์ด๋‹ค.
target ์›๋ž˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋กœ์„œ ๋‹ค์Œ์— ์„ค๋ช…ํ•˜๋Š” currentTarget๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
currentTarget
์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๋Š” ์š”์†Œ๋กœ์„œ ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋“ฑ๋ก๋œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜
ํ•œ๋‹ค. ๋งŒ์•ฝ ์บก์ฒ˜๋ง ๋˜๋Š” ๋ฒ„๋ธ”๋ง ํ•˜๋Š” ๋™์•ˆ ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋œ๋‹ค๋ฉด ์ด ์†์„ฑ์˜ ๊ฐ’์€ ์›๋ž˜
์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” target์†์„ฑ์˜ ๊ฐ’๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
bubbles
๋ฒ„๋ธ”๋ง ์ด๋ฒคํŠธ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ฒ„๋ธ”๋ง ์ด๋ฒคํŠธ์ธ ๊ฒฝ์šฐ๋Š” true๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—
๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
calcelable preventDefault() ๋ฉ”์„œ๋“œ๋กœ ์ทจ์†Œ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์•ก์…˜์ด ์กด์žฌํ•˜๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค.
eventPhase
์ด๋ฒคํŠธ ์ „ํŒŒ๊ฐ€ ์–ด๋–ค ๋‹จ๊ณ„์ธ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ƒ์ˆ˜ ๊ฐ’. ๋‹ค์Œ ์ƒ์ˆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ’์œผ๋กœ ์ทจํ•œ
๋‹ค.
Event.CAPTURING_PHASE
Event.AT_TARGET
Event.BUBBLING_PHASE
preventDefault()
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด <a> ํƒœ๊ทธ์˜
๊ฒฝ์šฐ ๋งํฌ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.
stopPropagation()
์บก์ฒ˜๋ง, ํƒ€์ผ“ํŒ…, ๋ฒ„๋ธ”๋ง ๊ฒฝ๋กœ์ƒ์— ํ˜„์žฌ ํ•ธ๋“ค๋ง๋˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด ์ด์ƒ์œผ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ์ „
ํŒŒ๋˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.
www.javaspecialist.co.kr
13. ์ด๋ฒคํŠธ (5/5) - ์œˆ๋„์šฐ ์ด๋ฒคํŠธ ์†์„ฑ
Attribute Value Description HTML5
onafterprint script Script to be run after the document is printed New
onbeforeprint script Script to be run before the document is printed New
onbeforeonload script Script to be run before the document loads New
onblur script Script to be run when the window loses focus
onerror script Script to be run when an error occur New
onfocus script Script to be run when the window gets focus
onhaschange script Script to be run when the document has change New
onload script Script to be run when the document loads
onmessage script Script to be run when the message is triggered New
onoffline script Script to be run when the document goes offline
ononline script Script to be run when the document comes online New
onpagehide script Script to be run when the window is hidden New
onpageshow script Script to be run when the window becomes visible New
onpopstate script Script to be run when the window's history changes New
onredo script Script to be run when the document performs a redo New
onresize script Script to be run when the window is resized New
onstorage script Script to be run when a document loads New
onundo script Script to be run when a document performs an undo New
onunload script Script to be run when the user leaves the document New
www.javaspecialist.co.kr
โ€ข Window object
โ€ข Navigator object
โ€ข Screen object
โ€ข History object
โ€ข Location object
โ€ข ์ฐธ๊ณ 
โ€“ http://www.w3schools.com/js/js_window.asp
โ€ข DOM Node
โ€ข DOM NodeList
โ€ข DOM NamedNodeMap
โ€ข DOM Document
โ€ข DOM Element
โ€ข DOM Attr
Core DOM Object Browser Object Model (BOM)
14. Objects (1/6) - Browser Objects & Core DOM Objects
www.javaspecialist.co.kr
โ€ข Document object
โ€“ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ๋กœ๋“œ ๋œ ๊ฐ HTML ๋ฌธ์„œ๋Š” d
ocument ๊ฐœ์ฒด๊ฐ€ ๋œ๋‹ค.
โ€“ document ๊ฐœ์ฒด๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ํŽ˜์ด
์ง€์˜ ๋ชจ๋“  HTML ์š”์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ
์ œ๊ณตํ•œ๋‹ค.
โ€ข Event object
โ€ข HTMLElement object
โ€ข Anchor object
โ€ข Area object
โ€ข Base object
โ€ข Body object
โ€ข Button object
โ€ข Form object
โ€ข Frame/IFrame object
โ€ข Frameset object
โ€ข Image object
โ€ข Input Button object
โ€ข Input Checkbox object
โ€ข Input File object
โ€ข Input Hidden object
โ€ข Input Password object
โ€ข Input Radio object
โ€ข Input Reset object
โ€ข Input Submit object
โ€ข Input Text object
โ€ข Link object
โ€ข Meta object
โ€ข Object object
โ€ข Option object
โ€ข Select object
โ€ข Style object
โ€ข Table object
โ€ข td / th object
โ€ข tr object
โ€ข Textarea object
14. Objects (2/6) - HTML DOM Objects
์ฐธ๊ณ  : http://www.w3schools.com/jsref/default.asp
www.javaspecialist.co.kr
14. Objects (3/6) - HTMLElement ๊ฐ์ฒด์˜ ์ฃผ์š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ
โ€ข HTMLElement ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋Š” Node ๊ฐ์ฒด์™€ Element ๊ฐ์ฒด๊ฐ€ ์ƒ์†๋ฐ›๋Š”๋‹ค.
โ€ข ์†์„ฑ
โ€“ className : ์š”์†Œ์˜ class ์†์„ฑ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ id : ์š”์†Œ์˜ id ์†์„ฑ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ innerHTML : ์š”์†Œ์˜ HTML ์ปจํ…ํŠธ(ํ…์ŠคํŠธ ํฌํ•จ)์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ tabIndex : ์š”์†Œ์˜ ํƒญ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ title : ์š”์†Œ์˜ title์†์„ฑ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€ข ๋ฉ”์„œ๋“œ
โ€“ toString() : ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
โ€ข ์ฐธ๊ณ 
โ€“ http://www.w3schools.com/jsref/dom_obj_all.asp
www.javaspecialist.co.kr
14. Objects (4/6) - Node ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ
โ€ข Node ๊ฐ์ฒด๋Š” document, element ๊ฐ์ฒด, attribute ๊ฐ์ฒด, Text, comment ๋“ฑ์ด ์žˆ๋‹ค.
โ€ข ์†์„ฑ
โ€“ attributes : ๋…ธ๋“œ ์†์„ฑ๋“ค์˜ ์ปฌ๋ ‰์…˜์„ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ childNodes : ์ž์‹๋…ธ๋“œ๋“ค์„ NodeList ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ parentNode : ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ textContent : ๋…ธ๋“œ์™€ ๋…ธ๋“œ ์ž์† ๋…ธ๋“œ์˜ ํ…์ŠคํŠธ ์ปจํ…ํŠธ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€ข input ์š”์†Œ์˜ ๊ฐ’์€ value ์†์„ฑ์„ ์ด์šฉํ•ด ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
โ€ข ๋ฉ”์„œ๋“œ
โ€“ appendChild(newListItem) : ์ธ์ž๋กœ ์ง€์ •ํ•œ ๋…ธ๋“œ๋ฅผ ์ž์‹๋…ธ๋“œ๋กœ ์ถ”๊ฐ€(๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋กœ ์ถ”๊ฐ€๋จ
)
โ€“ cloneNode() : ๋…ธ๋“œ ๋ณต์‚ฌ(์ธ์ž ๊ฐ’์ด true์ด๋ฉด ๊นŠ์€ ๋ณต์‚ฌ, false(๊ธฐ๋ณธ ๊ฐ’) ์ด๋ฉด ์–‡์€ ๋ณต์‚ฌ)
โ€“ hasAttributes() : ์–ด๋–ค ์†์„ฑ์ด๋ผ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด true ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ hasChildNodes() : ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด true ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ insertBefore(newItem, existingItem) : ์ธ์ž๋กœ ์ง€์ •ํ•œ ๋…ธ๋“œ๋ฅผ ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ์ž์‹๋…ธ๋“œ ์•ž์—
์‚ฝ์ž…ํ•œ๋‹ค.
โ€“ removeChild(childNode) : ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
โ€“ replaceChild(newNode, oldNode) : ์ž์‹ ๋…ธ๋“œ์—์„œ oldNode๋ฅผ newNode๋กœ ๋ฐ”๊พผ๋‹ค.
โ€ข ์ฐธ๊ณ 
โ€“ http://www.w3schools.com/jsref/dom_obj_node.asp
www.javaspecialist.co.kr
14. Objects (5/6) - Element ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ
โ€ข Element ๊ฐ์ฒด๋Š” HTML ๋ฌธ์„œ ๋‚ด์—์„œ ์š”์†Œ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
โ€ข Element ๊ฐ์ฒด๋Š” Element, Text, Comment, CDATASection, ProcessingInstruction, EntityRefe
rence ๋ฅผ ์ž์‹๋…ธ๋“œ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
โ€ข Element ๊ฐ์ฒด๋Š” Node ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์†์„ฑ
โ€“ tagName : ์š”์†Œ์˜ ํƒœ๊ทธ ์ด๋ฆ„์„ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€ข ๋ฉ”์„œ๋“œ
โ€“ getAttribute("attrName"), setAttribute("attrName", "value"), removeAttribute("attrName") :
์š”์†Œ ์†์„ฑ์„ ๋ฆฌํ„ด, ์ˆ˜์ •, ์‚ญ์ œํ•œ๋‹ค.
โ€“ hasAttribute("attrName")์€ ํ•ด๋‹น ์†์„ฑ์ด ์žˆ์œผ๋ฉด true ๋ฆฌํ„ดํ•œ๋‹ค.
โ€ข ์ฐธ๊ณ 
โ€“ http://www.w3schools.com/jsref/dom_obj_element.asp
www.javaspecialist.co.kr
14. Objects (6/6) - Text ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ
โ€ข <input type="text"> ๊ฐ์ฒด
โ€ข Node๊ฐ์ฒด์™€ Element ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์†์„ฑ
โ€“ defaultValue : ํ…์ŠคํŠธ ํ•„๋“œ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ disabled : ํ…์ŠคํŠธ ํ•„๋“œ์˜ disabled ์ƒํƒœ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ form : ํ…์ŠคํŠธ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” form ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ name : ํ…์ŠคํŠธ ํ•„๋“œ์˜ name ์†์„ฑ์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค.
โ€“ type : ํ…์ŠคํŠธ ํ•„๋“œ์˜ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Input ์š”์†Œ๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
โ€“ value : ํ…์ŠคํŠธ ํ•„๋“œ์˜ value ์†์„ฑ์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ž…๋ ฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
โ€ข ๋ฉ”์„œ๋“œ
โ€“ select() : ํ…์ŠคํŠธ ํ•„๋“œ์˜ ์ปจํ…ํŠธ๋ฅผ ์„ ํƒํ•œ๋‹ค.(๋ธ”๋ก ์„ค์ •๋จ)
โ€ข ์ฐธ๊ณ 
โ€“ http://www.w3schools.com/jsref/dom_obj_text.asp

Weitere รคhnliche Inhalte

Was ist angesagt?

ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!
ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!
ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!WooYoung Cho
ย 
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Hyosang Hong
ย 
2 1. html4.01
2 1. html4.012 1. html4.01
2 1. html4.01JinKyoungHeo
ย 
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)Sung-hoon Ma
ย 
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ์€์ˆ™ ์ด
ย 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs๊ธฐ๋™ ์ด
ย 
1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ
1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ
1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆCirculus
ย 
Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ
 Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ
Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœDong Jun Kwon
ย 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device accessJinKyoungHeo
ย 
Express ํ”„๋ ˆ์ž„์›Œํฌ
Express ํ”„๋ ˆ์ž„์›ŒํฌExpress ํ”„๋ ˆ์ž„์›Œํฌ
Express ํ”„๋ ˆ์ž„์›ŒํฌChoonghyun Yang
ย 
Djangoแ„‹แ…ช flask
Djangoแ„‹แ…ช flaskDjangoแ„‹แ…ช flask
Djangoแ„‹แ…ช flaskJiho Lee
ย 
์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.js์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.jsWoo Jin Kim
ย 
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1์„ฑ์ผ ํ•œ
ย 
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏNAVER D2
ย 
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012Daum DNA
ย 
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐScala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐJavajigi Jaesung
ย 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10hungrok
ย 
Java class
Java classJava class
Java classHyosang Hong
ย 
Java lambda
Java lambdaJava lambda
Java lambdaHyosang Hong
ย 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
ย 

Was ist angesagt? (20)

ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!
ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!
ECMAScript 6์˜ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค!
ย 
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
ย 
2 1. html4.01
2 1. html4.012 1. html4.01
2 1. html4.01
ย 
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
ย 
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ย 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
ย 
1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ
1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ
1.Startup JavaScript - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ
ย 
Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ
 Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ
Angular2 ๊ฐ€๊ธฐ์ „ Type script์†Œ๊ฐœ
ย 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
ย 
Express ํ”„๋ ˆ์ž„์›Œํฌ
Express ํ”„๋ ˆ์ž„์›ŒํฌExpress ํ”„๋ ˆ์ž„์›Œํฌ
Express ํ”„๋ ˆ์ž„์›Œํฌ
ย 
Djangoแ„‹แ…ช flask
Djangoแ„‹แ…ช flaskDjangoแ„‹แ…ช flask
Djangoแ„‹แ…ช flask
ย 
์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.js์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.js
ย 
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #1
ย 
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
[162] jpaแ„‹แ…ช แ„†แ…ฉแ„ƒแ…ฅแ†ซ แ„Œแ…กแ„‡แ…ก แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„Œแ…ฅแ„Œแ…กแ†ผ แ„€แ…ตแ„‰แ…ฎแ†ฏ
ย 
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
์ขŒ์ถฉ์šฐ๋Œ ORM ๊ฐœ๋ฐœ๊ธฐ | Devon 2012
ย 
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐScala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
ย 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10
ย 
Java class
Java classJava class
Java class
ย 
Java lambda
Java lambdaJava lambda
Java lambda
ย 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
ย 

Andere mochten auch

6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtimeJinKyoungHeo
ย 
2-2. html5
2-2. html52-2. html5
2-2. html5JinKyoungHeo
ย 
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)Joone Hur
ย 
5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphicsJinKyoungHeo
ย 
[Design dive] eyecan๋ฐœํ‘œ(web)
[Design dive] eyecan๋ฐœํ‘œ(web)[Design dive] eyecan๋ฐœํ‘œ(web)
[Design dive] eyecan๋ฐœํ‘œ(web)์ค€์„ ์ด
ย 
TRG Mobile Development
TRG Mobile DevelopmentTRG Mobile Development
TRG Mobile DevelopmentDavid Walker
ย 
ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6
ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6
ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6irinadmitruk
ย 
Bocetos dior
Bocetos diorBocetos dior
Bocetos dioramandaadame
ย 
Selvia nurul qomari
Selvia nurul qomariSelvia nurul qomari
Selvia nurul qomari34lilis
ย 
Tourism demand analysis
Tourism demand analysisTourism demand analysis
Tourism demand analysisAbdelaziz Lawani
ย 
Volunteer Enrichment- Science Musuem of MN 2016
Volunteer Enrichment- Science Musuem of MN 2016Volunteer Enrichment- Science Musuem of MN 2016
Volunteer Enrichment- Science Musuem of MN 2016kvanbooven
ย 
Inauguration montauban
Inauguration montaubanInauguration montauban
Inauguration montaubanEtincelleCoworking
ย 
Filtraciรณn | tp nยฐ 6 - Operaciones Unitarias
Filtraciรณn | tp nยฐ 6 - Operaciones UnitariasFiltraciรณn | tp nยฐ 6 - Operaciones Unitarias
Filtraciรณn | tp nยฐ 6 - Operaciones UnitariasMicaela Arenas
ย 

Andere mochten auch (16)

6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
ย 
2-2. html5
2-2. html52-2. html5
2-2. html5
ย 
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)
์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜? (2)
ย 
5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphics
ย 
[Design dive] eyecan๋ฐœํ‘œ(web)
[Design dive] eyecan๋ฐœํ‘œ(web)[Design dive] eyecan๋ฐœํ‘œ(web)
[Design dive] eyecan๋ฐœํ‘œ(web)
ย 
Chief Security Officer
Chief Security OfficerChief Security Officer
Chief Security Officer
ย 
Sumi
SumiSumi
Sumi
ย 
Rollsroyce mario scacco
Rollsroyce mario scaccoRollsroyce mario scacco
Rollsroyce mario scacco
ย 
TRG Mobile Development
TRG Mobile DevelopmentTRG Mobile Development
TRG Mobile Development
ย 
ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6
ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6
ั€ะตัˆะตะฝะธะต ะทะฐะดะฐะฝะธั ะฒ6
ย 
Bocetos dior
Bocetos diorBocetos dior
Bocetos dior
ย 
Selvia nurul qomari
Selvia nurul qomariSelvia nurul qomari
Selvia nurul qomari
ย 
Tourism demand analysis
Tourism demand analysisTourism demand analysis
Tourism demand analysis
ย 
Volunteer Enrichment- Science Musuem of MN 2016
Volunteer Enrichment- Science Musuem of MN 2016Volunteer Enrichment- Science Musuem of MN 2016
Volunteer Enrichment- Science Musuem of MN 2016
ย 
Inauguration montauban
Inauguration montaubanInauguration montauban
Inauguration montauban
ย 
Filtraciรณn | tp nยฐ 6 - Operaciones Unitarias
Filtraciรณn | tp nยฐ 6 - Operaciones UnitariasFiltraciรณn | tp nยฐ 6 - Operaciones Unitarias
Filtraciรณn | tp nยฐ 6 - Operaciones Unitarias
ย 

ร„hnlich wie 4-1. javascript

์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2destinycs
ย 
Javascript
JavascriptJavascript
JavascriptJoshua Yoon
ย 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3destinycs
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.Young-Beom Rhee
ย 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorYoung-Beom Rhee
ย 
แ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œก
แ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œกแ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œก
แ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œก์ค€์ผ ์—„
ย 
[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต
[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต
[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ตNAVER D2
ย 
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„Leonardo YongUk Kim
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Park Jonggun
ย 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
ย 
Java script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผ
Java script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผJava script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผ
Java script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผ์ •๊ธฐ ๊น€
ย 
Javascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐ
Javascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐJavascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐ
Javascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐjongho jeong
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by NetflixJi-Woong Choi
ย 
Node.js ๊ธฐ๋ณธ
Node.js ๊ธฐ๋ณธNode.js ๊ธฐ๋ณธ
Node.js ๊ธฐ๋ณธHan Jung Hyun
ย 
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆStart IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆPark Jonggun
ย 

ร„hnlich wie 4-1. javascript (20)

์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
์ž๋ฐ”์™€ ์‚ฌ์šฉํ•˜๊ธฐ2
ย 
Javascript
JavascriptJavascript
Javascript
ย 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E03 - Javascript intro.
ย 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operator
ย 
Java script
Java scriptJava script
Java script
ย 
แ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œก
แ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œกแ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œก
แ„‹แ…ฅแ†ทแ„Œแ…ฎแ†ซแ„‹แ…ตแ†ฏ 04แ„‹แ…ตแ†ฏแ„Žแ…ก HTML/Javascript ๊ต์œก
ย 
5.Spring IoC&DI(DI์™€ ๊ด€๋ จ๋œ ์–ด๋…ธํ…Œ์ด์…˜)
5.Spring IoC&DI(DI์™€ ๊ด€๋ จ๋œ ์–ด๋…ธํ…Œ์ด์…˜)5.Spring IoC&DI(DI์™€ ๊ด€๋ จ๋œ ์–ด๋…ธํ…Œ์ด์…˜)
5.Spring IoC&DI(DI์™€ ๊ด€๋ จ๋œ ์–ด๋…ธํ…Œ์ด์…˜)
ย 
[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต
[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต
[D2 campus seminar]แ„‰แ…ณแ„แ…กแ†ฏแ„…แ…กแ„…แ…ณแ†ฏ แ„แ…ฉแ†ผแ„’แ…กแ†ซ แ„ƒแ…กแ„‹แ…ฃแ†ผแ„’แ…กแ†ซ แ„‹แ…ฅแ†ซแ„‹แ…ฅแ„‹แ…ด แ„‘แ…ขแ„…แ…ฅแ„ƒแ…กแ„‹แ…ตแ†ท แ„†แ…กแ†บแ„‡แ…ฉแ„€แ…ต
ย 
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ: ์„คํƒ•์—†๋Š” ์„ธ๊ณ„
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
ย 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
ย 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
ย 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
ย 
Java script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผ
Java script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผJava script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผ
Java script แ„€แ…ตแ„‡แ…ฉแ†ซแ„€แ…ช jqueryแ„‹แ…ด แ„’แ…ชแ†ฏแ„‹แ…ญแ†ผ
ย 
Javascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐ
Javascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐJavascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐ
Javascript ์กฐ๊ธˆ ๋” ์ž˜ ์•Œ๊ธฐ
ย 
javascript01
javascript01javascript01
javascript01
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Fault Tolerance Architecture by Netflix
ย 
Node.js ๊ธฐ๋ณธ
Node.js ๊ธฐ๋ณธNode.js ๊ธฐ๋ณธ
Node.js ๊ธฐ๋ณธ
ย 
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆStart IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
ย 

4-1. javascript

  • 1. www.javaspecialist.co.kr www.javaspecialist.co.kr ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋“ค์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜ ํŠน์ง•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ๋‹ค.
  • 2. www.javaspecialist.co.kr www.javaspecialist.co.kr์ž๋ฐ” ์ „๋ฌธ๊ฐ€ ๊ทธ๋ฃน ๊ฐœ์š” ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ ์žฅ์ ๊ณผ ๋‹จ์  ๊ธฐ๋ณธ ๊ตฌ์กฐ ์‹คํ–‰ ์œ„์น˜ ์˜ˆ์•ฝ์–ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฐ์ฒด ๋ฐฐ์—ด ํ•จ์ˆ˜ ์—ฐ์‚ฐ์ž ์ œ์–ด๋ฌธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค ๋Ÿฌ ๋ฒ„๋ธ”๋ง๊ณผ ์บก์ฒ˜๋ง Objects
  • 3. www.javaspecialist.co.kr 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ์š” โ€ข ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ โ€“ ํด๋ผ์ด์–ธํŠธ์ชฝ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ๋„ท์Šค์ผ€์ดํ”„ ์‚ฌ์—์„œ LiveScript๋ฅผ ๋ฐœํ‘œํ–ˆ๊ณ . ์ดํ›„ ์ฌ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์‚ฌ์™€ ๊ณต๋™์œผ๋กœ ๋ผ์ด๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™•์žฅํ•œ JavaScript๋ฅผ ํƒ„์ƒ์‹œ์ผฐ๋‹ค. โ€“ ํ˜„์žฌ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ECMA์˜ Technical Committee 39(TC-39)์—์„œ ์ •์˜ํ•œ ECMAScript(ECMA-262) ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•œ๋‹ค. โ€ข ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ โ€“ ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๋‹ค. โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ํŠน์„ฑ ์ƒ ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋ฉฐ ๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ผํ•œ ์‹ค ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. โ€ข ๋ฌด๋ฃŒ์ด๋ฉฐ, ์‰ฝ๊ณ  ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ์ง์ ‘ html๋ฌธ์„œ์— ์‚ฝ์ž…๋˜์–ด, ๋ธŒ๋ผ์šฐ์ €์—์„œ htmlํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ๊ฐ™์ด ํ•ด์„๋˜๊ณ  ์‹ค ํ–‰๋œ๋‹ค. โ€“ ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์‹คํ–‰๋˜๊ธฐ์— ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ผ ํ•„์š” ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“ ์ปดํŒŒ์ผ ๊ณผ์ •์ด ํ•„์š” ์—†์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๋งŒ ์žˆ๋‹ค๋ฉด ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. โ€“ ํƒ€์ž…์ฒดํฌ๊ฐ€ ์ฒ ์ €ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜๋“ค์˜ ํƒ€์ž…์— ์žˆ์–ด์„œ ์ฐจ์ด๋ฅผ ๋‘์ง€ ์•Š๋Š”๋‹ค. โ€“ ํด๋ž˜์Šค ์ •์˜๊ฐ€ ์•ˆ๋˜๋ฉฐ, ํด๋ž˜์Šค ์ƒ์† ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‹  ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ ๋‹ค. โ€ข ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ž€? โ€“ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ผ์ธ ๋‹จ์œ„๋กœ ํ•ด์„(์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋˜์–ด ์‹คํ–‰๋˜๋Š” ์–ธ์–ด. โ€“ ๋ณ„๋„์˜ ์ปดํŒŒ์ผ ๊ณผ์ •์ด ์—†๋‹ค. โ€“ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•ด ์ค„ ํ”„๋กœ๊ทธ๋žจ์ด ๋ณ„๋„๋กœ ํ•„์š”ํ•˜๋‹ค. โ€“ HTML ๋ฌธ์„œ ๋‚ด์—์„œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” <script>์™€ </script>์‚ฌ์ด์— ์ž‘์„ฑํ•œ๋‹ค.
  • 4. www.javaspecialist.co.kr 2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์ง• โ€“ ์›น ๋ฌธ์„œ(HTML)์— ๋ผ์›Œ์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด โ€“ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ๋ฌธ์„œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ž ๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ด์„๊ธฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. โ€“ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์˜ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๋‹ค. โ€“ ๋ช‡ ๊ฐ€์ง€ ๊ฐ์ฒด ์ง€ํ–ฅ ์š”์†Œ๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ƒ์†์˜ ์ด์  ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋กœ์ธํ•ด ๋‹คํ˜•์„ฑ ์‚ฌ์šฉ์— ์žˆ์–ด์„œ๋„ ์ œ์•ฝ์ด ์žˆ๋‹ค. โ€“ ๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•จ์ˆ˜๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋Šฅ โ€“ ์ผ๋ฐ˜์ ์œผ๋กœ HTML๋กœ๋งŒ ์ž‘์„ฑ๋œ ์›น ๋ฌธ์„œ๋Š” ๋‹จ์ˆœํžˆ ์ •๋ณด๋งŒ์„ ์ œ๊ณตํ•  ๋ฟ, ์›น ๋ฌธ์„œ์— ๋™์ ์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ ์ธ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. โ€“ HTLM ๋ฌธ์„œ ๋‚ด์—์„œ ํ”„๋กœ๊ทธ๋žจ์ ์ธ ์š”์†Œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ค ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋ฐ˜์‘์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น ๋ฌธ์„œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ฌธ์„œ ๋‚ด ํŠน์ • ๋ถ€๋ถ„์„ ํด๋ฆญํ–ˆ๊ฑฐ๋‚˜ ์›น ๋ฌธ์„œ๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„์— ์›น ๋ฌธ์„œ ์—`์„œ ์–ด๋–ค ์ž‘์—…์ด ์ง„ํ–‰๋˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ๋ฌธ์„œ ๋‚ด์˜ HTML ์š”์†Œ์˜ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ธฐ ์ „์— ๋จผ์ € ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธ ํ•ด ์„œ๋ฒ„์˜ ์ž‘์—… ๋ถ€๋‹ด๋„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด์–ด ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ ์šฐ์ €์— ๋งž๋Š” ์›น ๋ฌธ์„œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋งž์ถคํ˜• ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์— ์ฟ ํ‚ค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ ๋‹ค.
  • 5. www.javaspecialist.co.kr 3. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์žฅ์ ๊ณผ ๋‹จ์  โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์žฅ์  โ€“ ์ž‘์—… ์†๋„๊ฐ€ ๋น ๋ฆ„ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” HTML ํŒŒ์ผ ๋‚ด์—์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. โ€ข ์ž๋ฐ”, C/C++ ๋“ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ์ ์ธ ํ‹€์„ ๊ทธ๋Œ€๋กœ ๊ฐ–์ถ”๊ณ  ์žˆ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ๋ฉด ์‰ฝ๊ฒŒ ์–ธ์–ด๋ฅผ ์ตํž ์ˆ˜ ์žˆ๋‹ค. โ€“ ํ”Œ๋žซํผ ๋…๋ฆฝ์  โ€“ ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์›€ โ€ข ๊ฐ์ฒด์˜ ๋‹จ์ˆœํ™”๋กœ ์ธํ•œ ํ”„๋กœ๊ทธ๋žจ ์ œ์ž‘ ์šฉ์ด โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‹จ์  โ€“ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค. ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด์ด๋ฏ€๋กœ ๋ˆ„๊ตฌ๋“  ๋ณต์‚ฌํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚น์„ ํ†ตํ•ด ์†Œ์Šค์ฝ”๋“œ ๋…ธ์ถœ์„ ์–ด๋Š ์ •๋„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ์Œ โ€“ Packer - http://dean.edwards.name/packer/ โ€“ Unpacker - http://www.strictly-software.com/unpacker#unpacker โ€“ ํ•œ์ •๋œ ๊ฐ์ฒด์™€ ๊ฐ์ฒด ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. โ€ข C++์˜ STL, Java์˜ API ์ฒ˜๋Ÿผ ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค. โ€ข ์ œํ•œ๋œ ๊ฐ์ฒด์™€ ๊ฐ์ฒด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณต์žกํ•œ ๊ฒŒ์ž„, ๋ฉ”์‹ ์ €, ์ฑ„ํŒ…๋ฐฉ ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐœ๋ฐœ์ด ์–ด๋ ต๋‹ค.
  • 6. www.javaspecialist.co.kr 4. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ โ€“ <script> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML ๋ฌธ์„œ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. โ€“ type ์†์„ฑ๊ฐ’์œผ๋กœ"text/javascript"๋ฅผ ์ž…๋ ฅ(HTML5 ์—์„œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ) 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <meta charset="euc-kr" /> 5. <title>javascript-base.html</title> 6. </head> 7. <body> 8. <hr> 9. <h1>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๊ตฌ์กฐ</h1> 10. <hr> 11. <script type="text/javascript"> 12. document.write("<h2>์•ˆ๋…•ํ•˜์„ธ์š”!</h2>"); 13. </script> 14. </body> 15. </html> ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌธ ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด์„œ ๊ผญ HTML ๋ฌธ์„œ๊ฐ€ ํ•„ ์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. Firebug์™€ ๋ช‡๋ช‡ Extension ๋งŒ ์žˆ์–ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • 7. www.javaspecialist.co.kr 5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์œ„์น˜ (1/3) โ€“ head ํƒœ๊ทธ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ <head> ํƒœ๊ทธ ์˜์—ญ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒฝ์šฐ โ€“ ํด๋ผ์ด์–ธํŠธ ์ž‘์—… ์ „ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ง€์ •ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ โ€“ <body> ํƒœ๊ทธ ์˜์—ญ์—์„œ๋„ ๊ณตํ†ต์ ์œผ๋กœ ๋ฐ˜์‘ 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <meta charset="euc-kr" /> 5. <title>javascript-head.html</title> 6. <script type="text/javascript"> 7. window.onload = function( ){ 8. alert("์ด ๋ฉ”์‹œ์ง€ ์ƒ์ž๋Š” onload ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ณด์ž…๋‹ˆ๋‹ค."); 9. }; 10. document.write("<h2>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์„ธ๊ณ„์— ์˜ค์‹  ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ ๋‹ค.</h2>"); 11. </script> 12. </head> 13. <body> 14. <hr><h1>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ head ์š”์†Œ ์˜์—ญ์— ์œ„์น˜ํ–ˆ์„ ๋•Œ</h1><hr> 15. </body> 16. </html>
  • 8. www.javaspecialist.co.kr 5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์œ„์น˜ (2/3) โ€“ body ํƒœ๊ทธ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ <body> ํƒœ๊ทธ ์˜์—ญ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒฝ์šฐ โ€“ <body> ํƒœ๊ทธ ์˜์—ญ์— "document.write( )"ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ํ‘œํ˜„ โ€“ HTML ์š”์†Œ๊ฐ€ ํŒŒ์‹ฑ๋œ ๋‹ค์Œ ์‹คํ–‰๋˜๋„๋ก ํ•  ๋•Œ 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <meta charset="euc-kr" /> 5. <title> javascript-body.html </title> 6. </head> 7. <body> 8. <hr><h2>์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ body ์š”์†Œ ์˜์—ญ ๋‚ด์— ์œ„์น˜ํ–ˆ์„ ๋•Œ</h2><hr> 9. <script type="text/javascript"> 10. document.write("์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌธ์žฅ"); 11. </script> 12. <p> xhtml์˜ ๋ฌธ์žฅ </p> 13. </body> 14. </html>
  • 9. www.javaspecialist.co.kr 5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์œ„์น˜ (3/3) โ€“ ์™ธ๋ถ€ํŒŒ์ผ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ โ€“ <head> ํƒœ๊ทธ ๋ถ€๋ถ„์ด๋“  <body> ํƒœ๊ทธ ๋ถ€๋ถ„์ด๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๊ณณ์— ์‚ฝ์ž… โ€“ ์™ธ๋ถ€ ํŒŒ์ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ์ž๋Š” "js" โ€“ script element์˜ src ์†์„ฑ๊ฐ’์ด ํ˜ธ์ถœํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŒŒ์ผ๋ช… โ€“ defer ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด HTML ๋ฌธ์„œ๊ฐ€ ํŒŒ์‹ฑ๋œ ๋‹ค์Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ โ€“ HTML5 ์—๋Š” async ์†์„ฑ๋„ ์ถ”๊ฐ€๋˜์—ˆ์Œ โ€“ HTML5์—๋Š” type ์†์„ฑ ์ƒ๋žต ๊ฐ€๋Šฅํ•จ โ€“ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์•ˆ์—๋Š” <script> ํƒœ๊ทธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Œ <script type="text/javascript" src="ํ˜ธ์ถœํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋ช….js"></script>
  • 10. www.javaspecialist.co.kr 6. ์˜ˆ์•ฝ์–ด(ECMAScript ํ‘œ์ค€) โ€ข Keyword break do instanceof typeof case else new var catch finally return void continue for switch while debugger function this with default if throw delete in try โ€ข FutureReservedWord class enum extends super const export import interface implements let static yield public protected package private ์ž๋ฐ” ์–ธ์–ด์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ๋“ค ์ž…๋‹ˆ๋‹ค.
  • 11. www.javaspecialist.co.kr 7. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œํ˜„ ๋ฐฉ์‹ โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋ฌธ โ€ข ๋ฌธ์žฅ ๋์— ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ์ž…๋ ฅํ•œ๋‹ค. โ€ข ๊ตฌ๋ฌธ ์‚ฌ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ์ƒ๋žตํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‚˜ ์˜ค๋ฅ˜๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ถŒ์žฅํ•œ๋‹ค. โ€ข ;์„ ๋„ฃ์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ Packing ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ โ€“ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฃผ์„ โ€ข // : ํ•œ ์ค„ ์ฃผ์„ ์ฒ˜๋ฆฌ. ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋์— ์‚ฌ์šฉ โ€ข /* ~ */ : ํ•œ ์ค„ ์ด์ƒ์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ โ€“ ๋ณ€์ˆ˜ ์„ ์–ธ โ€ข var ํ‚ค์›Œ๋“œ ์ด์šฉ โ€ข var ์—†์ด ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌ๋ฉด ์ „์—ญ๋ณ€์ˆ˜(์ตœ์ƒ์œ„ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„)๊ฐ€ ๋จ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„(scope)๋Š” ์ฝ”๋“œ ๋ธ”๋ก({ })์ด ์•„๋‹Œ ํ•จ์ˆ˜ ๋‹จ์œ„ ์ž„ 1. function hello(name) { 2. console.log("Say Hello~ " + name); 3. var a = 10; 4. b = 20; 5. }; 6. hello("KilDong"); 7. console.log(a); //Reference Error 8. console.log(b); //20 ์ถœ๋ ฅ๋จ
  • 12. www.javaspecialist.co.kr 8. ๋ฐ์ดํ„ฐ ํƒ€์ž… (1/3)- Primitive data type โ€ข Primitive data type โ€“ ์ˆซ์ž(number) โ€ข ์ •์ˆ˜, ์‹ค์ˆ˜ ๊ตฌ๋ถ„ ์—†์Œ โ€ข ๋ชจ๋“  ์ˆ˜๊ฐ€ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ๋ณ€์ˆ˜์— ์ €์žฅ๋จ โ€ข Infinity, NaN๋„ ์ˆซ์ž์ž„ ๏ƒ  ์ด๋“ค์€ ๋น„๊ตํ•  ๊ฒฝ์šฐ isFinite(), isNaN()์œผ๋กœ ๋น„๊ตํ•ด์•ผ ํ•จ. โ€“ ๋ฌธ์ž์—ด(string) โ€ข ๋ฌธ์ž, ๋ฌธ์ž์—ด ๊ตฌ๋ถ„ ์—†์Œ โ€ข ์Œ๋”ฐ์˜ดํ‘œ("") ๋กœ ๋ฌถ์–ด๋„ ๋˜๊ณ , ํ™‘๋”ฐ์˜ดํ‘œ(โ€˜โ€™)๋กœ ๋ฌถ์–ด๋„ ๋จ โ€ข var s = "Hello World"; //๋ฆฌํ„ฐ๋Ÿด๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ โ€ข var o = new String("Hello World") //์ƒ์„ฑ์ž ์ด์šฉ โ€ข String(new Date()); //new ์—†์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ(๋ฌธ์ž์—ด ์•„๋‹˜) โ€“ ๋ถˆ๋ฆฐ(boolean) ํƒ€์ž… โ€ข true/false โ€ข ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ 0, null, ""(๋นˆ ๋ฌธ์ž์—ด), false, undefined, NaN์œผ๋กœ ํŒ๋‹จ๋˜๋ฉด false, ๋‚˜๋จธ์ง„ true โ€ข ๋™๋“ฑ ๋น„๊ต๋ฅผ ํ•  ๊ฒฝ์šฐ ํƒ€์ž…๋„ ๊ฐ™์ด ๋น„๊ตํ•ด ์ฃผ๋Š” === ์‚ฌ์šฉ์„ ๊ถŒ์žฅ โ€“ undefined โ€ข ์ •์˜๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฃจํŠธ๊ฐ์ฒด์˜ ์†์„ฑ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์Œ โ€ข ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ํ• ๋‹น๋˜๊ธฐ ์ „์— undefined๊ฐ€ ๋จ โ€ข ๋ถˆ๋ฆฐํ˜•์€ false๋กœ ๋ฐ˜ํ™˜, ์ˆซ์ž๋Š” NaN, ๋ฌธ์ž์—ด์€ "undefined"๋กœ ๋ฐ˜ํ™˜๋จ โ€“ null โ€ข ๊ฐ์ฒด๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ž„. โ€ข ํ‚ค์›Œ๋“œ์ž„
  • 13. www.javaspecialist.co.kr 8. ๋ฐ์ดํ„ฐ ํƒ€์ž… (2/3) - Reference data type โ€ข Reference data type โ€“ ๊ฐ์ฒด โ€ข {}๋กœ ์ƒ์„ฑ โ€ข ์ƒ์„ฑ์žํ•จ์ˆ˜ ์ด์šฉ โ€“ ๋ฐฐ์—ด โ€ข [ ] โ€“ ํ•จ์ˆ˜ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ž˜์Šค๊ฐ€ ์—†๋‹ค. โ€ข ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. โ€“ ๊ธฐํƒ€ โ€ข ๋‚ ์งœ(Date), ์ •๊ทœ์‹(RegExp) ๋“ฑ ๋‚ด์žฅ ๊ฐ์ฒด โ€ข Window ๊ฐ์ฒด โ€ข Document ๊ฐ์ฒด โ€ข Element, Node ๊ฐ์ฒด ๋“ฑ
  • 14. www.javaspecialist.co.kr 8. ๋ฐ์ดํ„ฐ ํƒ€์ž… (3/3) - ๊ฐ์ฒด โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋Š” ๋ชจ๋“  ๊ฒƒ(Everything)์„ ์˜๋ฏธํ•œ๋‹ค. โ€“ ๋ฌธ์ž์—ด(String), ์ˆซ์ž(Number), ๋ฐฐ์—ด(Array), ํ•จ์ˆ˜(Function) ๋“ฑ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‚ด์žฅ(built-in) ๊ฐ์ฒด์™€ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค. โ€“ ๋‚ด์žฅ ๊ฐ์ฒด โ€ข Number, String, Date, Array, Boolean, Math, RegExp, JSON โ€“ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด โ€ข Object์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• โ€“ person = new Object(); โ€“ person.name = "JinKyoung"; โ€“ person.age = 30; โ€ข ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• โ€“ function Person(name, age) { โ€“ this.name = name; //์†์„ฑ ์ถ”๊ฐ€ โ€“ this.age = age; โ€“ this.setName = function(newName) { //๋ฉ”์„œ๋“œ ์ถ”๊ฐ€ โ€“ this.name = newName; โ€“ } โ€“ } โ€“ var friend = new Person("KikDong", 25); โ€ข ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• โ€“ var person = { name: "Sunsin", age: 35};
  • 15. www.javaspecialist.co.kr 9. ์—ฐ์‚ฐ์ž โ€ข Punctuator { } ( ) [ ] . ; , < > <= >= == != === !== + - * % ++ -- << >> >>> & | ^ ! ~ && || ? : = += -= *= %= <<= >>= >>>= &= |= ^= โ€ข DivPunctuator / /= โ€ข ์กฐ๊ฑด ์—ฐ์‚ฐ์ž(์‚ผํ•ญ์—ฐ์‚ฐ์ž) โ€“ ์กฐ๊ฑด์‹ ? ์ฒ˜๋ฆฌ๋‚ด์šฉ1 : ์ฒ˜๋ฆฌ๋‚ด์šฉ2 โ€“ ์กฐ๊ฑด ๊ฒฐ๊ณผ๊ฐ’์ด ์ฐธ(true)์ด๋ฉด"์ฒ˜๋ฆฌ๋‚ด์šฉ 1", ๊ฑฐ์ง“(false)์ด๋ฉด"์ฒ˜๋ฆฌ๋‚ด์šฉ 2" ๋ฐ˜ํ™˜ ===์™€ !==๋Š” ํƒ€ ์ž…๋„ ๋น„๊ตํ•˜๋Š” ์—ฐ ์‚ฐ์ž์ด๋‹ค. &&์™€ ||์˜ ๊ฒฐ๊ณผ๋Š” true/false๊ฐ€ ์•„๋‹ˆ๋‹ค. ์™ผ์ชฝ ํ•ญ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋Œ€์ž…๋ฉ ๋‹ˆ๋‹ค. ๋ณดํ†ต์˜ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž์™€ ๊ธฐํ˜ธ๋“ค์ž…๋‹ˆ๋‹ค. ๋‹จํ•ญ์—ฐ์‚ฐ์ž, ๋‹คํ•ญ์—ฐ์‚ฐ์ž, ๋น„ํŠธ์—ฐ ์‚ฐ์ž, ๋Œ€์ž…์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ๋“ฑ ์ด ์žˆ๋‹ค.
  • 16. www.javaspecialist.co.kr 10. ์ œ์–ด๋ฌธ (1/3) โ€ข ์กฐ๊ฑด๋ฌธ โ€“ if() ๋ฌธ โ€ข if(์กฐ๊ฑด์‹) { }else { } โ€“ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž โ€ข ์กฐ๊ฑด์‹ ? ์‹1 : ์‹2 โ€“ switch() ๋ฌธ โ€ข switch(a) { โ€ข case a>2 : โ€ข //์‹คํ–‰๋ฌธ; โ€ข break; โ€ข case a==2 : โ€ข //์‹คํ–‰๋ฌธ; โ€ข break; โ€ข default : โ€ข //์‹คํ–‰๋ฌธ; โ€ข } โ€ข ์กฐ๊ฑด ํ‰๊ฐ€ ๊ทœ์น™ โ€“ ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ 0, null, ""(๋นˆ ๋ฌธ์ž์—ด), false, undefined, NaN์œผ๋กœ ํŒ๋‹จ๋˜๋ฉด false, ๋‚˜๋จธ์ง„ true โ€“ || ์™€ && ๋‘ ์กฐ๊ฑด์‹์„ ๋น„๊ตํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” true ๋˜๋Š” false ๊ฐ€ ์•„๋‹Œ ์™ผ์ชฝํ•ญ ๋˜๋Š” ์šฐ ์ธก ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค. โ€ข ||์€ false๊ฐ€ ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋จ(๋ชจ๋‘ false๋กœ ํŒ๋‹จ๋  ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํ•ญ์˜ ๊ฐ’ ๋ฐ˜ํ™˜) โ€ข && ์€ false๋กœ ํŒ๋‹จ ๋œ ์ฒซ ๋ฒˆ์งธ ํ•ญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜(false๋กœ ํŒ๋‹จ๋˜๋Š” ํ•ญ์ด ์—†์„ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํ•ญ์˜ ๊ฐ’ ๋ฐ˜ํ™˜)
  • 17. www.javaspecialist.co.kr 10. ์ œ์–ด๋ฌธ (2/3) โ€ข ๋ฐ˜๋ณต์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ์œผ๋กœ for, for/in, while, do/while๋ฌธ์ด ์žˆ๋‹ค. โ€ข for ๋ฌธ โ€“ ์‚ฌ์šฉ๋ฒ• โ€ข for(๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”; ๋ฐ˜๋ณต ์—ฌ๋ถ€ ํ…Œ์ŠคํŠธ; ๋ณ€์ˆ˜ ๊ฐ’ ์ฆ๊ฐ€) { โ€ข //์‹คํ–‰์ฝ”๋“œ ๋ธ”๋ก โ€ข } โ€ข for/in ๋ฌธ โ€“ ์‚ฌ์šฉ๋ฒ• โ€ข for(๋ณ€์ˆ˜ in ๊ฐ์ฒด) { โ€ข //์‹คํ–‰ ์ฝ”๋“œ ๋ธ”๋ก โ€ข } โ€“ ์‹คํ–‰ ์ฝ”๋“œ ๋ธ”๋ก์—์„œ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด [ ]์‚ฌ์šฉ ๊ฐ€๋Šฅ โ€“ for/in ๋ฌธ์œผ๋กœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์†์„ฑ์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Object ๊ฐ์ฒด์— ์›๋ž˜ ์ •์˜๋œ ์† ์„ฑ์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. 1. var myObj = { p1:โ€˜aโ€™, p2:โ€˜bโ€™}; //๊ฐ์ฒด ์ •์˜ 2. var result=โ€˜โ€™; 3. for(var prop in myObj) { 4. result += โ€˜์†์„ฑ๋ช…: โ€™ + prop + โ€˜, ๊ฐ’: โ€™ + myObj[prop] + โ€˜nโ€™; 5. } 1. var ar = [โ€˜aโ€™, โ€˜bโ€™]; //๋ฐฐ์—ด ์ •์˜ 2. var result=โ€˜โ€™; 3. for(var i in ar) { 4. result += โ€˜์ธ๋ฑ์Šค: โ€™ + i + โ€˜, ๊ฐ’: โ€™ + ar[i] + โ€˜nโ€™; 5. }
  • 18. www.javaspecialist.co.kr 10. ์ œ์–ด๋ฌธ (3/3) โ€ข while๋ฌธ โ€“ var i=0; โ€“ while(i<10) { โ€“ i++; โ€“ } โ€ข do/while ๋ฌธ โ€“ var i=0; โ€“ do { โ€“ i++; โ€“ } while(i<10); โ€ข ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ var ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.(ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์ฐธ์กฐ ๊ฐ€๋Šฅ)
  • 19. www.javaspecialist.co.kr 11. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ โ€ข try/catch/finally โ€“ ์‚ฌ์šฉ๋ฒ• โ€ข try { โ€ข //์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ํฌํ•จ โ€ข }catch(error) { โ€ข //์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ โ€ข }finally { โ€ข //ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ ํฌํ•จ โ€ข } โ€“ try ๋ธ”๋ก์ด ์žˆ์œผ๋ฉด ์ตœ์†Œํ•œ catch ๋ธ”๋ก์ด๋‚˜ finally ๋ธ”๋ก ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. โ€“ try ๋ธ”๋ก๋งŒ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ ๋ชปํ•œ๋‹ค. โ€ข throw โ€“ ์‚ฌ์šฉ๋ฒ• โ€ข throw ์˜ˆ์™ธ๊ฐ์ฒด โ€“ ์˜ˆ โ€ข if("์˜ˆ์™ธ ๋ฐœ์ƒ์กฐ๊ฑด์ด ๋˜๋ฉด") { โ€ข throw new Error("์˜ˆ์™ธ ๋ฉ”์‹œ์ง€"); โ€ข throw "์˜ˆ์™ธ ๋ฉ”์‹œ์ง€"; โ€ข throw 4; โ€ข } ์†์„ฑ๊ณผ ๋ฉ”์„œ ๋“œ ์„ค๋ช… message ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ ์„ค๋ช… name ์˜ˆ์™ธ ํƒ€์ž…์„ ๋ฌธ์ž์—ด๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Error(์˜ˆ์™ธ ๊ฐ์ฒด์˜ ์ตœ ์ƒ์œ„ ๊ฐ์ฒด), EvalError, SyntaxError, URIError, TypeError ๋“ฑ์ด ์žˆ๋‹ค. toString() ํ‘œ์ค€์—๋Š” ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์—์„œ ๊ตฌํ˜„ํ•  ํ•„ ์š” ์—†๋‹ค. message, name์œผ๋กœ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค. Error ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ try { console.log(a); }catch(error) { console.info(error.message); console.info(error.name); }finally { console.info("return resource"); }
  • 20. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (1/6) - ๊ธฐ๋ณธ๊ฐœ๋… โ€ข ํ•จ์ˆ˜์˜ ์ •์˜ โ€“ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ํŠน์ • ์ž‘์—… ์ˆ˜ํ–‰ ์œ„ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ•˜๋‚˜์˜ ๋‹จ์œ„ โ€“ ์˜ˆ์•ฝ์–ด โ€˜functionโ€™์œผ๋กœ ์‹œ์ž‘ โ€“ ํ•จ์ˆ˜์˜ ์‹œ์ž‘๊ณผ ๋์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐํ˜ธ: ์ค‘๊ด„ํ˜ธ({ }) โ€“ ๋ฐ˜ํ™˜ํ˜•(return type), ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)์— ๋Œ€ํ•œ ์ž๋ฃŒํ˜• ์ž…๋ ฅ ์•ˆ ํ•จ โ€“ ํ•จ์ˆ˜ ์ •์˜ ๊ตฌ๋ฌธ ๊ตฌ์กฐ โ€ข function name(parameters) { โ€ข //statements; โ€ข } โ€“ function : ํ•จ์ˆ˜ ์ •์˜ํ•˜๋Š” ํ‚ค์›Œ๋“œ โ€“ name : ํ•จ์ˆ˜ ์ด๋ฆ„, ์„ ์–ธ๊ณผ ๋™์‹œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ์ƒ๋žต ๊ฐ€๋Šฅ(anonymous function) โ€“ parameters : ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜, ๊ฐ’์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ƒ๋žต ๊ฐ€๋Šฅ โ€“ statements : ํ•จ์ˆ˜์˜ ๋ชธ์ฒด, ์ง€์—ญ๋ณ€์ˆ˜ ์ •์˜ ๋ฐ ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ยป ์ง€์—ญ๋ณ€์ˆ˜ ์ •์˜ ์‹œ var ์„ ์–ธ ์•ˆ ํ•˜๋ฉด ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋จ โ€“ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ตฌ๋ฌธ ๊ตฌ์กฐ โ€ข name(arguments); โ€“ name: ํ•จ์ˆ˜๋ช… โ€“ arguments: ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌํ•ด์•ผ ํ•  ๊ฐ’ โ€“ Lexical ํŠน์„ฑ โ€ข ์ฝ”๋“œ ๊ทธ๋Œ€๋กœ์˜ ํ™˜๊ฒฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ •์˜ํ•œ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜์˜ ๊ฒ€์ƒ‰์ด ์ผ์–ด๋‚œ๋‹ค. โ€ข ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์„ ์–ธ๋œ ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๋•Œ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š๊ณ  ์ฐธ์กฐํ•˜๋ฉด undef ined var data=10; function calc() { console.log(data); var data=20; }
  • 21. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (2/6) - ํ•จ์ˆ˜์˜ ์—ญํ•  โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค. โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜์˜ ์—ญํ• ์„ ๋‹ค์Œ 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. โ€“ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋ฃจํ‹ด์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜ โ€ข new ์—†์ด ์‚ฌ์šฉ โ€“ ๊ฐ’์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜ โ€ข ์ธ์ž๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ โ€ข ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅ โ€ข ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ โ€“ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ. ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ์„œ์˜ ํ•จ์ˆ˜ โ€ข new์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ•  โ€ข ํ•จ์ˆ˜ ์ด๋ฆ„ ์ฒซ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ •์˜ํ•œ๋‹ค.(๊ฐ•์ œ์‚ฌํ•ญ์€ ์•„๋‹˜) ๏ถ ์ž๊ธฐ ์ฐธ์กฐ ํ˜ธ์ถœ ํŒจํ„ด โ€“ ํ•จ์ˆ˜ ์ •์˜์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋„๋ก ํ•จ โ€“ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ธ์ž๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ. โ€“ (function() { โ€“ console.log("ํ•จ์ˆ˜ ์ •์˜์™€ ํ•จ๊ป˜ ์‹คํ–‰๋จ"); โ€“ })();
  • 22. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (3/6) - ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„ + prototype : - ํ•จ์ˆ˜ ๋‚ด var ๋ณ€์ˆ˜ ํ•จ์ˆ˜ ๋‚ด ์ฝ”๋“œ (๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ) + constructor : + ๋Ÿฐํƒ€์ž„์‹œ ์ถ”๊ฐ€/์ œ๊ฑฐ๋˜๋Š” ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„ ์‹คํ–‰์ฝ”๋“œ ๋ธ”๋ก ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด ๊ณต๊ฐœ ๋ณ€์ˆ˜ ์˜์—ญ ํ•จ์ˆ˜ ๊ฐ์ฒด ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋กœ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ ์œผ๋ฏ€๋กœ add.Description = "์„ค๋ช…"; ์ด๋ผ ๊ณ  ํ•˜๋ฉด Description ๋ณ€์ˆ˜๊ฐ€ ๊ณต ๊ฐœ๋ณ€์ˆ˜ ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค. function add(x, y) { return x+y; } ๋ผ๊ณ  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ–ˆ์„ ๋•Œ -x : undefined -y : undefined return x+y; ํ•จ์ˆ˜๋ช….prototype ํ•จ์ˆ˜๋ช….๊ณต๊ฐœ๋ณ€์ˆ˜๋ช…ํ•จ์ˆ˜๋ช…() ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด์— ์ถ”๊ฐ€๋œ ๋ฉค ๋ฒ„๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์†๋ฐ›๋Š”๋‹ค. ์ด ๋•Œ ํ”„๋กœํ† ํƒ€์ž… ๋ฉค๋ฒ„์˜ ๋น„ ๋Œ€ ์นญ์„ฑ์— ์ฃผ์˜ํ•˜์ž. ํ•จ์ˆ˜๋ช….prototype.๋ฉค๋ฒ„ = ๊ฐ’;
  • 23. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (3/6) - ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„ function Person() { var name; var age; } var person1 = new Person(); person1.name = "ํ™๊ธธ๋™"; person1.age = 30; console.log(person1.name + " " + person1.age); Person.prototype.city = "์„œ์šธ";//๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์† ๋ฐ›๋Š”๋‹ค. console.log(person1.city); person1.city = "๋‰ด์š•";//์ธ์Šคํ„ด์Šค์— city๋ผ๋Š” ๋ณ€์ˆ˜ ์ถ”๊ฐ€๋œ๋‹ค. //ํ”„๋กœํ† ํƒ€์ž…์˜ ๋ณ€์ˆ˜ ๊ฐ’์ด ์ˆ˜์ •๋˜์ง€ ์•Š๋Š”๋‹ค. //ํ”„๋กœํ† ํƒ€์ž… ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ”„๋กœํ† ํƒ€์ž…๊ฐ์ฒด๋ฅผ //ํ†ตํ•ด์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. console.log(Person.prototype.city);//์„œ์šธ ์ถœ๋ ฅ๋จ. ๋‰ด์š•์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค. //ํ”„๋กœํ† ํƒ€์ž… ๋ณ€์ˆ˜์˜ ๋น„ ๋Œ€์นญ์„ฑ์ด๋ผ ๋ถ€๋ฅธ๋‹ค. Person.job = "ํ”„๋กœ๊ทธ๋ž˜๋จธ"; console.log(Person.job);//๊ณต๊ฐœ๋ณ€์ˆ˜ ์˜์—ญ
  • 24. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (4/6) - ํ•จ์ˆ˜ ์ •์˜ ๋ฐฉ๋ฒ• โ€ข ํ•จ์ˆ˜ ์ •์˜ โ€“ function add(x, y) { โ€“ return x+y; โ€“ } โ€ข ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ โ€“ var add = function(x, y) { โ€“ return x+y; โ€“ } โ€ข Function ์ƒ์„ฑ์ž ์‚ฌ์šฉ โ€“ var add = new Function("x", "y", "return x+y"); โ€“ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋งˆ์ง€๋ง‰ ์ธ์ž๊ฐ€ ์‹คํ–‰ ์ฝ”๋“œ๊ฐ€ ๋œ๋‹ค. โ€ข ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ํ•จ์ˆ˜ ์ธ์ž โ€“ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ์— ์ธ์ž์˜ ์ˆ˜๋Š” ์ •์˜์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋จ โ€“ ๋งค๊ฐœ๋ณ€์ˆ˜๋ณด๋‹ค ์ธ์ž์˜ ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋‚˜๋จธ์ง„ undefined๋กœ ํ• ๋‹น๋จ โ€“ ์ธ์ž์˜ ์ˆ˜๊ฐ€ ๋” ๋งŽ์œผ๋ฉด ๋‚จ๋Š” ์ธ์ž๋Š” ๋ฌด์‹œ๋จ
  • 25. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (5/6) - arguments โ€ข arguments โ€“ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด, Object ํƒ€์ž… โ€“ arguments.callee ์†์„ฑ โ€ข ์ต๋ช… ํ•จ์ˆ˜(anonymous function)์—์„œ ์ž์‹ ์„ ์ฐธ์กฐํ•จ โ€“ arguments.length โ€ข ์ „๋‹ฌ๋˜๋Š” ์ธ์ž์˜ ๊ฐœ์ˆ˜ var add = function() { var sum=0 console.log(arguments.length); for(var data in arguments) { //console.log(arguments[data]); sum = sum + arguments[data]; } return sum; } console.log(add(10, 20, 30, 40)); console.log(add(10, 20, 30)); var fact = (function(n) { //console.log(arguments.callee); var self = arguments.callee; if(n==0) return 1; else return (n * self(n-1)); })(10); console.log(fact)//3628800
  • 26. www.javaspecialist.co.kr 12. ํ•จ์ˆ˜ (6/6) - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋กœ์ € โ€ข ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜ โ€ข ์˜ˆ) โ€“ function outer() { โ€“ var x=0; โ€“ return function() { โ€“ return ++x; โ€“ } โ€“ } โ€“ var f = outer(); โ€“ var g = outer(); โ€“ f(); //1 โ€“ f(); //2 โ€“ g(); //1 โ€“ g(); //2 + prototype : - x : 0; return ++x; -x : 0 outer ํด๋กœ์ € f return ++x; -x : 0 return ++x; g f์™€ g๋Š” ๋…๋ฆฝ๋œ ๋ณ€ ์ˆ˜ ๊ณต๊ฐ„์„ ๊ฐ€์ง„ ์ธ ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค . ํด๋กœ์ €๋ฅผ ํฌํ•จํ•˜๋ฉด ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—† ์Œ
  • 27. www.javaspecialist.co.kr 13. ์ด๋ฒคํŠธ (1/5) - ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ โ€ข ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ •์˜ ๋ฐ ์ข…๋ฅ˜ โ€“ ์ด๋ฒคํŠธ(event) โ€ข ์‚ฌ์šฉ์ž์— ์˜ํ•œ ํŠน์ • ํ–‰์œ„์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ์ž์™€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ ์ฒ˜๋ฆฌ ์˜ ์š”์ธ โ€“ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ, ํ•˜์ดํผ๋งํฌ ์œ„์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์œ„์น˜ ์‹œํ‚ฌ ๊ฒฝ์šฐ ๋“ฑ์— ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ โ€“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(Event Handler) โ€ข ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ โ€ข ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด โ€ข HTML ๋ฌธ์„œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋Š” onxxx ์‹์œผ๋กœ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์†์„ฑ์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค. โ€“ ํด๋ฆญ ์ด๋ฒคํŠธ๋Š” onclick ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ด์šฉ โ€ข ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง โ€“ HTML ํƒœ๊ทธ์˜ ์†์„ฑ์œผ๋กœ ๋“ฑ๋ก โ€ข <input type="checkbox" name="options" value="true" onclick="handler()"> โ€“ function handler() { โ€ฆ; } ํ•จ์ˆ˜๊ฐ€ <script> ํƒœ๊ทธ ์•ˆ์— ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•จ. โ€“ ์š”์†Œ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋กœ ๋“ฑ๋ก โ€ข document.getElementById("options").onclick = function() {โ€ฆ;} โ€ข ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ โ€“ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ event ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋จ, ํ•จ์ˆ˜ ์ •์˜์‹œ ์„ ์–ธ์•ˆํ•ด๋„ ์ž๋™ ์ „๋‹ฌ๋จ โ€“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ฝ”๋“œ์—์„œ false ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์š”์†Œ์˜ ๊ธฐ๋ณธ์ ์ธ ์•ก์…˜์„ ์ทจ์†Œ์‹œํ‚จ๋‹ค. โ€ข event.preventDefault();์™€ ๊ฐ™์Œ
  • 28. www.javaspecialist.co.kr 13. ์ด๋ฒคํŠธ (1/5) - ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ function handler() { console.log("์ด๋ฒคํŠธ ๋ฐœ์ƒํ•จ"); } window.onload = function() { var pElement = document.querySelector("#two"); pElement.onclick = function() {//ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ event๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ evnet ๊ฐ์ฒด ์ „๋‹ฌ๋จ console.log(pElement.textContent); console.log(event) } var naverElement = document.querySelector("#naver"); naverElement.onclick = function(event) { event.preventDefault();//์—˜๋ฆฌ๋จผํŠธ์˜ ๊ธฐ๋ณธ ์•ก์…˜์„ ์ทจ์†Œ์‹œํ‚ด console.log(naverElement.href); //return false;//์—˜๋ฆฌ๋จผํŠธ์˜ ๊ธฐ๋ณธ ์•ก์…˜์„ ์ทจ์†Œ์‹œํ‚ด } //var threeElement = document.querySelector("#three"); var threeElement = document.getElementById("three"); threeElement.addEventListener("click", function() { console.log(threeElement.textContent); }); }; <p onclick="handler()">์ฒซ ๋ฒˆ์งธ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.</p> <p id="two">๋‘ ๋ฒˆ์งธ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.</p> <a href="http://www.naver.com" id="naver">๋„ค์ด๋ฒ„ </a> <p id="three">์„ธ ๋ฒˆ์งธ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.</p> body ํƒœ๊ทธ์˜ ๋‚ด์šฉ
  • 29. www.javaspecialist.co.kr 13. ์ด๋ฒคํŠธ (2/5) - DOM Level 2 ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง โ€ข W3C์—์„œ ํ‘œ์ค€ํ™” ํ•œ DOM Level2 ์ด๋ฒคํŠธ ๋ชจ๋ธ โ€ข ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ํ‘œ์ค€์ ์ธ ๋ฐฉ๋ฒ•์„ ๋น„๋กฏํ•ด ์ด๋ฒคํŠธ ์ „ํŒŒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ํ‘œ์ค€, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋“ฑ์ด ํฌํ•จ๋ผ ์žˆ๋‹ค. โ€ข DOM Level2๋ฅผ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” DOM Level 0(์•ž์—์„œ ์„ค๋ช…ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ)์„ ์ง€์›ํ•œ๋‹ค. โ€“ ์ต์Šคํ”Œ๋กœ๋Ÿฌ 8์ดํ•˜๋Š” DOM Level2๋ฅผ ์ง€์›์•ˆํ•จ โ€ข ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง๊ณผ ์ด๋ฒคํŠธ๋ฒ„๋ธ”๋ง โ€“ ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง : ํƒ€๊ฒŸ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์œ„ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๊นŒ์ง€ ์ฒ˜๋ฆฌ๋˜๋Š” ํ˜„์ƒ. โ€“ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง : ํƒ€๊ฒŸ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒ์œ„ ์š”์†Œ์— ์ด๋ฒคํŠธ๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ํ˜„์ƒ. โ€ข ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง โ€“ elem.addEventListener(string type, Function handler, useCapture); โ€ข type : ํ•ธ๋“ค๋ง ํ•˜๊ณ  ์‹ถ์€ ์ด๋ฒคํŠธ, DOM Level0 ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ on์„ ๋นผ๋ฉด๋œ๋‹ค. โ€ข handler : ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜. ์ธ์ž๋กœ ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ์ „ ๋‹ฌ๋œ๋‹ค. โ€ข useCapture : true์ผ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์„ ์บก์ฒ˜๋ง ๋‹จ๊ณ„์—์„œ๋งŒ ํ˜ธ์ถœ๋˜๋„๋ก ํ•œ๋‹ค. false( ๋””ํดํŠธ)์ผ ๊ฒฝ์šฐ ํƒ€๊ฒŸ ๋‹จ๊ณ„์™€ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ํ˜ธ์ถœ๋œ๋‹ค. โ€“ elem.removeEventListener(string type, Function handler, useCapture); โ€ข addEventListener๋กœ ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ œ๊ฑฐ โ€“ event.stopPropagation(); โ€ข ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง์—์„œ๋Š” ํƒ€๊ฒŸ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฐ€์žฅ ์ƒ์œ„ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. โ€ข ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ, ํƒ€๊ฒŸ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋งŒ ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•จ
  • 30. www.javaspecialist.co.kr 13. ์ด๋ฒคํŠธ (3/5) - ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง/๋ฒ„๋ธ”๋ง ์˜ˆ 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <meta charset="UTF-8"> 5. <title>Insert title here</title> 6. <script> 7. window.onload = function() { 8. var elements = document.querySelectorAll("div"); 9. for(var i=0; i<elements.length; i++) { 10. elements[i].addEventListener("click", function(event) { 11. console.log(this.getAttribute("id")); 12. event.stopPropagation(); 13. }, true); 14. }; 15. }; 16. </script> 17. </head> 18. <body> 19. <div id="a">AAAAAA 20. <div id="b">BBBBBB 21. <div id="c">CCCCCC 22. </div> 23. </div> 24. </div> 25. </body> 26. </html> <div>A </div> <div>B </div> <div>C </div> useCaptur e stopPropa gation Aํด๋ฆญ Bํด๋ฆญ Cํด๋ฆญ ๋น„๊ณ  true yes a a a true no a a b a b c false yes a b c ๊ถŒ์žฅ false no a b a c b a
  • 31. www.javaspecialist.co.kr 13. ์ด๋ฒคํŠธ (4/5) - Event ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ ์†์„ฑ/๋ฉ”์„œ๋“œ ์„ค๋ช… type ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์˜ ํƒ€์ž…. "click", "keydown"์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์† ์„ฑ๋ช…๊ณผ ๋™์ผํ•œ ๋ฌธ์ž์—ด์ด๋‹ค. target ์›๋ž˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋กœ์„œ ๋‹ค์Œ์— ์„ค๋ช…ํ•˜๋Š” currentTarget๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. currentTarget ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๋Š” ์š”์†Œ๋กœ์„œ ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋“ฑ๋ก๋œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ ํ•œ๋‹ค. ๋งŒ์•ฝ ์บก์ฒ˜๋ง ๋˜๋Š” ๋ฒ„๋ธ”๋ง ํ•˜๋Š” ๋™์•ˆ ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋œ๋‹ค๋ฉด ์ด ์†์„ฑ์˜ ๊ฐ’์€ ์›๋ž˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” target์†์„ฑ์˜ ๊ฐ’๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. bubbles ๋ฒ„๋ธ”๋ง ์ด๋ฒคํŠธ์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ฒ„๋ธ”๋ง ์ด๋ฒคํŠธ์ธ ๊ฒฝ์šฐ๋Š” true๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. calcelable preventDefault() ๋ฉ”์„œ๋“œ๋กœ ์ทจ์†Œ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์•ก์…˜์ด ์กด์žฌํ•˜๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค. eventPhase ์ด๋ฒคํŠธ ์ „ํŒŒ๊ฐ€ ์–ด๋–ค ๋‹จ๊ณ„์ธ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ƒ์ˆ˜ ๊ฐ’. ๋‹ค์Œ ์ƒ์ˆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ’์œผ๋กœ ์ทจํ•œ ๋‹ค. Event.CAPTURING_PHASE Event.AT_TARGET Event.BUBBLING_PHASE preventDefault() ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด <a> ํƒœ๊ทธ์˜ ๊ฒฝ์šฐ ๋งํฌ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. stopPropagation() ์บก์ฒ˜๋ง, ํƒ€์ผ“ํŒ…, ๋ฒ„๋ธ”๋ง ๊ฒฝ๋กœ์ƒ์— ํ˜„์žฌ ํ•ธ๋“ค๋ง๋˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด ์ด์ƒ์œผ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ์ „ ํŒŒ๋˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.
  • 32. www.javaspecialist.co.kr 13. ์ด๋ฒคํŠธ (5/5) - ์œˆ๋„์šฐ ์ด๋ฒคํŠธ ์†์„ฑ Attribute Value Description HTML5 onafterprint script Script to be run after the document is printed New onbeforeprint script Script to be run before the document is printed New onbeforeonload script Script to be run before the document loads New onblur script Script to be run when the window loses focus onerror script Script to be run when an error occur New onfocus script Script to be run when the window gets focus onhaschange script Script to be run when the document has change New onload script Script to be run when the document loads onmessage script Script to be run when the message is triggered New onoffline script Script to be run when the document goes offline ononline script Script to be run when the document comes online New onpagehide script Script to be run when the window is hidden New onpageshow script Script to be run when the window becomes visible New onpopstate script Script to be run when the window's history changes New onredo script Script to be run when the document performs a redo New onresize script Script to be run when the window is resized New onstorage script Script to be run when a document loads New onundo script Script to be run when a document performs an undo New onunload script Script to be run when the user leaves the document New
  • 33. www.javaspecialist.co.kr โ€ข Window object โ€ข Navigator object โ€ข Screen object โ€ข History object โ€ข Location object โ€ข ์ฐธ๊ณ  โ€“ http://www.w3schools.com/js/js_window.asp โ€ข DOM Node โ€ข DOM NodeList โ€ข DOM NamedNodeMap โ€ข DOM Document โ€ข DOM Element โ€ข DOM Attr Core DOM Object Browser Object Model (BOM) 14. Objects (1/6) - Browser Objects & Core DOM Objects
  • 34. www.javaspecialist.co.kr โ€ข Document object โ€“ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ๋กœ๋“œ ๋œ ๊ฐ HTML ๋ฌธ์„œ๋Š” d ocument ๊ฐœ์ฒด๊ฐ€ ๋œ๋‹ค. โ€“ document ๊ฐœ์ฒด๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ํŽ˜์ด ์ง€์˜ ๋ชจ๋“  HTML ์š”์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. โ€ข Event object โ€ข HTMLElement object โ€ข Anchor object โ€ข Area object โ€ข Base object โ€ข Body object โ€ข Button object โ€ข Form object โ€ข Frame/IFrame object โ€ข Frameset object โ€ข Image object โ€ข Input Button object โ€ข Input Checkbox object โ€ข Input File object โ€ข Input Hidden object โ€ข Input Password object โ€ข Input Radio object โ€ข Input Reset object โ€ข Input Submit object โ€ข Input Text object โ€ข Link object โ€ข Meta object โ€ข Object object โ€ข Option object โ€ข Select object โ€ข Style object โ€ข Table object โ€ข td / th object โ€ข tr object โ€ข Textarea object 14. Objects (2/6) - HTML DOM Objects ์ฐธ๊ณ  : http://www.w3schools.com/jsref/default.asp
  • 35. www.javaspecialist.co.kr 14. Objects (3/6) - HTMLElement ๊ฐ์ฒด์˜ ์ฃผ์š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ โ€ข HTMLElement ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋Š” Node ๊ฐ์ฒด์™€ Element ๊ฐ์ฒด๊ฐ€ ์ƒ์†๋ฐ›๋Š”๋‹ค. โ€ข ์†์„ฑ โ€“ className : ์š”์†Œ์˜ class ์†์„ฑ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ id : ์š”์†Œ์˜ id ์†์„ฑ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ innerHTML : ์š”์†Œ์˜ HTML ์ปจํ…ํŠธ(ํ…์ŠคํŠธ ํฌํ•จ)์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ tabIndex : ์š”์†Œ์˜ ํƒญ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ title : ์š”์†Œ์˜ title์†์„ฑ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€ข ๋ฉ”์„œ๋“œ โ€“ toString() : ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. โ€ข ์ฐธ๊ณ  โ€“ http://www.w3schools.com/jsref/dom_obj_all.asp
  • 36. www.javaspecialist.co.kr 14. Objects (4/6) - Node ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ โ€ข Node ๊ฐ์ฒด๋Š” document, element ๊ฐ์ฒด, attribute ๊ฐ์ฒด, Text, comment ๋“ฑ์ด ์žˆ๋‹ค. โ€ข ์†์„ฑ โ€“ attributes : ๋…ธ๋“œ ์†์„ฑ๋“ค์˜ ์ปฌ๋ ‰์…˜์„ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ childNodes : ์ž์‹๋…ธ๋“œ๋“ค์„ NodeList ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ parentNode : ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ textContent : ๋…ธ๋“œ์™€ ๋…ธ๋“œ ์ž์† ๋…ธ๋“œ์˜ ํ…์ŠคํŠธ ์ปจํ…ํŠธ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€ข input ์š”์†Œ์˜ ๊ฐ’์€ value ์†์„ฑ์„ ์ด์šฉํ•ด ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. โ€ข ๋ฉ”์„œ๋“œ โ€“ appendChild(newListItem) : ์ธ์ž๋กœ ์ง€์ •ํ•œ ๋…ธ๋“œ๋ฅผ ์ž์‹๋…ธ๋“œ๋กœ ์ถ”๊ฐ€(๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋กœ ์ถ”๊ฐ€๋จ ) โ€“ cloneNode() : ๋…ธ๋“œ ๋ณต์‚ฌ(์ธ์ž ๊ฐ’์ด true์ด๋ฉด ๊นŠ์€ ๋ณต์‚ฌ, false(๊ธฐ๋ณธ ๊ฐ’) ์ด๋ฉด ์–‡์€ ๋ณต์‚ฌ) โ€“ hasAttributes() : ์–ด๋–ค ์†์„ฑ์ด๋ผ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด true ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ hasChildNodes() : ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด true ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ insertBefore(newItem, existingItem) : ์ธ์ž๋กœ ์ง€์ •ํ•œ ๋…ธ๋“œ๋ฅผ ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ์ž์‹๋…ธ๋“œ ์•ž์— ์‚ฝ์ž…ํ•œ๋‹ค. โ€“ removeChild(childNode) : ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. โ€“ replaceChild(newNode, oldNode) : ์ž์‹ ๋…ธ๋“œ์—์„œ oldNode๋ฅผ newNode๋กœ ๋ฐ”๊พผ๋‹ค. โ€ข ์ฐธ๊ณ  โ€“ http://www.w3schools.com/jsref/dom_obj_node.asp
  • 37. www.javaspecialist.co.kr 14. Objects (5/6) - Element ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ โ€ข Element ๊ฐ์ฒด๋Š” HTML ๋ฌธ์„œ ๋‚ด์—์„œ ์š”์†Œ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. โ€ข Element ๊ฐ์ฒด๋Š” Element, Text, Comment, CDATASection, ProcessingInstruction, EntityRefe rence ๋ฅผ ์ž์‹๋…ธ๋“œ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. โ€ข Element ๊ฐ์ฒด๋Š” Node ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ์†์„ฑ โ€“ tagName : ์š”์†Œ์˜ ํƒœ๊ทธ ์ด๋ฆ„์„ ๋ฆฌํ„ดํ•œ๋‹ค. โ€ข ๋ฉ”์„œ๋“œ โ€“ getAttribute("attrName"), setAttribute("attrName", "value"), removeAttribute("attrName") : ์š”์†Œ ์†์„ฑ์„ ๋ฆฌํ„ด, ์ˆ˜์ •, ์‚ญ์ œํ•œ๋‹ค. โ€“ hasAttribute("attrName")์€ ํ•ด๋‹น ์†์„ฑ์ด ์žˆ์œผ๋ฉด true ๋ฆฌํ„ดํ•œ๋‹ค. โ€ข ์ฐธ๊ณ  โ€“ http://www.w3schools.com/jsref/dom_obj_element.asp
  • 38. www.javaspecialist.co.kr 14. Objects (6/6) - Text ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ โ€ข <input type="text"> ๊ฐ์ฒด โ€ข Node๊ฐ์ฒด์™€ Element ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ์†์„ฑ โ€“ defaultValue : ํ…์ŠคํŠธ ํ•„๋“œ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ disabled : ํ…์ŠคํŠธ ํ•„๋“œ์˜ disabled ์ƒํƒœ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ form : ํ…์ŠคํŠธ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” form ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ name : ํ…์ŠคํŠธ ํ•„๋“œ์˜ name ์†์„ฑ์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ดํ•œ๋‹ค. โ€“ type : ํ…์ŠคํŠธ ํ•„๋“œ์˜ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Input ์š”์†Œ๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. โ€“ value : ํ…์ŠคํŠธ ํ•„๋“œ์˜ value ์†์„ฑ์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ž…๋ ฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. โ€ข ๋ฉ”์„œ๋“œ โ€“ select() : ํ…์ŠคํŠธ ํ•„๋“œ์˜ ์ปจํ…ํŠธ๋ฅผ ์„ ํƒํ•œ๋‹ค.(๋ธ”๋ก ์„ค์ •๋จ) โ€ข ์ฐธ๊ณ  โ€“ http://www.w3schools.com/jsref/dom_obj_text.asp