์ƒˆ์†Œ์‹

Languages/Java Script

[Js] ๊ฐ์ฒด | javascript ๊ฐ์ฒด | ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • -
๋ฐ˜์‘ํ˜•

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ "์ƒํ™œ์ฝ”๋”ฉ"์˜ ์ด๊ณ ์ž‰ ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ฌ๋ฆฐ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค.

์ƒ์—…์ ์ธ ์šฉ๋„๊ฐ€ ์•„๋‹Œ, ๊ฐœ์ธ ๊ณต๋ถ€ ์ •๋ฆฌ ๋ชฉ์ ์œผ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ž„์„ ๋ฏธ๋ฆฌ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 

 


 

๊ฐ์ฒด(Object)


์„œ๋กœ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‚ด๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ๊ทธ๋ฆ‡ ์ด๋ผ๋Š” ์ ์—์„œ ๊ฐ์ฒด๋Š” ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•œ ์—ญํ• ์„ ์ง€๋‹Œ๋‹ค.

 

ํ•˜์ง€๋งŒ

 

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ๋ฐฐ์—ด์€ ์•„์ดํ…œ์— ๋Œ€ํ•œ ์‹๋ณ„์ž๋กœ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋ฐฐ์—ด ์ „์ฒด์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ์„œ ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์‹๋ณ„์ž๊ฐ€ ๋œ๋‹ค.

์ด ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๋งŒ์•ฝ ์ธ๋ฑ์Šค๋กœ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฐ์ฒด(dictionary)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ์—ฐ๊ด€๋ฐฐ์—ด(associative array) ๋˜๋Š” ๋งต( map), ๋”•์…”๋„ˆ๋ฆฌ(Dictionary)๋ผ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ฐ์ฒด์— ํ•ด๋‹นํ•œ๋‹ค.

 

์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด

๋ฐฐ์—ด๋กœ a =['a','b','c']๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด a,b,c ๊ฐ๊ฐ ์ธ๋ฑ์Šค 0,1,2๋กœ ๊ฒฐ์ •์ด ๋˜์ง€๋งŒ

๊ฐ์ฒด์˜ ๊ฒฝ์šฐ a,b,c ๊ฐ๊ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฌธ์ž(ex : a=first, b = second  ..)๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๊ฐ์ฒด์˜ ์ƒ์„ฑ

๋‹ค์Œ์€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•์ด๋‹ค.

<script>
    var grades = {'haeun': 10, 'admin': 6, 'root': 80}; //๊ฐ์ฒด์—์„œ ์ธ๋ฑ์Šค๋Š” ๋ฌธ์ž! 
    //haeun, admin, root = ์ธ๋ฑ์Šค์ด๊ณ  ๊ทธ ๋’ค์— ๊ฐ’๋“ค์€ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” value์ด๋‹ค.
</script>

 

 

์œ„์˜ ์˜ˆ์ œ์—์„œ haeun์€ key๊ฐ€ ๋˜๊ณ , 10์€ value๊ฐ€ ๋œ๋‹ค. ์•„๋ž˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด๋‹ค.

<script>
    var grades = {};
    grades['haeun'] = 10;
    grades['admin'] = 6;
    grades['root'] = 80;
</script>

 

์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

<script>
    var grades = new Object();
    grades['haeun'] = 10;
    grades['admin'] = 6;
    grades['root'] = 80;
</script>

๊ฐ์ฒด๋ฅผ ๋งŒ๋“  ํ›„ ํ•„์š”ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š”

Object์ด๋ฆ„ . ์ ‘๊ทผํ•  ์ธ๋ฑ์Šค (key) ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค.

 

 

์œ„ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด grades.a ์™€ ๊ฐ™์ด ์ถœ๋ ฅ์„ ํ•˜์˜€๋‹ค.

a+ab+abc = 10+30+50 ์ด๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

 

 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

์œ„์™€ ๊ฐ™์ด ๊ฐ์ฒด์—์„œ ํ•„์š”ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

โ–ผ ๊ฟ€ Tip 

๋”๋ณด๊ธฐ

 

๋Œ€๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์กฐ์ž‘ ๊ฐ€๋Šฅ.

์ฆ‰ ์ ‘๊ทผํ•  ๋•Œ ๋ฌธ์ž์—ด ์ทจ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

'k8805'๋ผ๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’์ด 6์ผ ๋•Œ

๋ฌธ์ž์—ด์˜ ํ•ฉ์„ ์ด์šฉํ•ด์„œ ํ‘œ๊ธฐ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ์–ด ๋ณด์ž!

 

<script>
    var grades = {'haeun':10, 'admin':20, 'root':30};
    for(key in grades){
        document.write("key : "+key+", value : "+grades[key]+"<br />");
    }
</script>

 

 

 

๋ฐฐ์—ด์€ ์ˆœ์„œ๊ฐ€ ์žˆ์ง€๋งŒ (0,1,2, ๋“ฑ ๊ฐ ์ž๋ฆฌ์— ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ ธ์žˆ์Œ)

๊ฐ์ฒด๋Š” key์™€ value๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ถœ๋ ฅ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

 

๊ทธ๋ž˜์„œ for in ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

for์ค‘๊ฐ„์— in์ด ์žˆ๋Š”๋ฐ in์„ ์ค‘์‹ฌ์œผ๋กœ in๋’ค๋Š” ๊ฐ์ฒด๊ฐ€ ์œ„์น˜ํ•˜๊ณ , ์•ž์ชฝ์—๋Š” ๊ฐ์ฒด์˜ ํ‚ค ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.

(์ด๊ฒƒ์€ ์•ฝ์†์‚ฌํ•ญ์ด๋‹ค.)

 

for in ! ์ƒˆ๋กœ์šด ๋ฐ˜๋ณต๋ฌธ ํ˜•ํƒœ


for ๋ฌธ์€ in ๋’ค์— ๋”ฐ๋ผ์˜ค๋Š” ๋ฐฐ์—ด์˜ key ๊ฐ’์„ in ์•ž์˜ ๋ณ€์ˆ˜ name์— ๋‹ด์•„์„œ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์ด ์‹คํ–‰๋  ๋•Œ ๋ณ€์ˆ˜ key์˜ ๊ฐ’์œผ๋กœ haeun, admin, root ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์—

grades[key]๋ฅผ ํ†ตํ•ด์„œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 


โ€ป ๋ฐฐ์—ด ๊ฐ์ฒด ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

๊ฐ์ฒด์—๋Š” ๊ฐ์ฒด๋ฅผ ๋‹ด์„์ˆ˜๋„ ์žˆ๊ณ , ํ•จ์ˆ˜๋„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.

<!DOCTYPE html>
<html>
<head>
	<title>haha</title>
</head>
<body>
<script type="text/javascript">
	/*   ํ•จ์ˆ˜๋ฅผ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. 
    	 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ•จ์ˆ˜๋„ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์•ˆ์— ์ €์žฅ์ด ๋  ์ˆ˜ ์žˆ์Œ.
    */
    var grades = {
    	'list' : {'haeun' : 10,'admin' : 8, 'root':80}, //๋˜๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ๋จ. ์—ฐ๊ฒฐํ•ด์ค˜์•ผ ํ•˜๋‹ˆ , (์ฝค๋งˆ) ๋นผ๋จน์œผ๋ฉด ์—๋Ÿฌ๋‚จ.
    	'show' : function(){ 
    		alert('Hello world');
    	}

    }
    alert(grades['list']['haeun']); //list์— ์ ‘๊ทผํ•˜์—ฌ haeun์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„๋•Œ 
    //alert(grades['show']()); // ์ดํ‘œํ˜„์€ alert()๋ฅผ ๋‘๋ฒˆ ์‹คํ–‰์‹œํ‚ด -> undefined
    grades['show'](); //์ด๊ฒŒ ๋งž๋Š” ํ‘œํ˜„
</script>


</body>
</html>

 

 

this

 

this ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ณ€์ˆ˜์ด๋‹ค. (์•ฝ์†๋œ ๋ณ€์ˆ˜)

์ฆ‰ ํ•จ์ˆ˜๊ฐ€ ์†Œ์†๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๋‹ค๋ฅธ ์ถœ๋ ฅ๋ฒ•๋„ ํ™•์ธํ•ด๋ณด์ž.

 

ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•ˆ์— ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ณ ,(list : ...)

์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฉฐ(show)

์ด๋ฅผ ํ˜ธ์ถœ ํ• ๋•Œ ๊ฐ์ฒด.ํ•จ์ˆ˜(); ํ˜•์‹์œผ๋กœ ์–ด๋– ํ•œ ์ผ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ด์ฒ˜๋Ÿผ ๊ด€๋ จ์„ฑ์ด ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๊ทธ๋ฃน์ง€์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์„œ๋กœ ์—ฐ๊ด€๋œ ๊ฐ’, ๋ฐ์ดํ„ฐ, ์ฒ˜๋ฆฌ ๋“ฑ์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฆ‡ ์•ˆ์— ๋„ฃ์–ด ๊ทธ๋ฃนํ•‘ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

์ด๊ฒƒ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ์„ฑ์งˆ๋กœ

์ทจ์ง€์— ๋”ฐ๋ผ์„œ ๋กœ์ง์„ ๊ฐ์ฒด์— ๊ทธ๋ฃนํ•‘ํ•ด์„œ ๊ฐ์ฒด๋ผ๋Š” ๋ถ€ํ’ˆ์„ ์กฐ๋ฆฝํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๋Š” ์™„์ œํ’ˆ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ์— ๋Œ€ํ•ด์„œ๋Š” ๋’ค์—์„œ ์ž์„ธํžˆ ์‚ดํŽด๋ณธ๋‹ค.

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.