°ÁÂ Àü ÇÊÀÚÀÇ Àâ´ã>
À̹ø °Á´ Å¿À´å³Ý¿¡¼ Ȱµ¿ ÁßÀÎ Micosoft MVP ÀÎ Á¤¼®¸ð´ÔÀÇ °ÁÂÀÔ´Ï´Ù.
Á¤¼®¸ð´ÔÀº ÃÖ±Ù Ajax Design Patterns¶õ Ã¥À» ¹ø¿ªÇÏ¿© Ãâ°£Çϱ⵵ Çϼ̱¸¿ä.
Å¿À »çÀÌÆ®ÀÇ Talk °Ô½ÃÆÇ ½Ã»ðÀ̱⵵ ÇϽʴϴÙ.
ƯÀ¯ÀÇ °³±×ÀûÀÎ ¹®Ã¼°¡ ƯÇãÃâ¿ø ÁßÀÎ ÀÌ Ä£±¸ÀÇ Àç¹Ì³ °Á¿¡ Çѹø ºüÁ®º¸¼¼¿ä~
ÀÌ °ÁÂÀÇ ¼ø¼
°´Ã¼ÁöÇâ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·Î±×·¡¹Ö
(1) ½ºÆ®·¹Äª
(2) ÄÚ¾î ÀÚ¹Ù½ºÅ©¸³Æ® °´Ã¼¿Í prototypeÀ» »ç¿ëÇÑ °´Ã¼ È®Àå
(3) »ç¿ëÀÚ Á¤ÀÇ °´Ã¼. ±×¸®°í »ó¼Ó°ú Àç»ç¿ë
(4) ³ª¸¸ÀÇ ÇÁ·¹ÀÓ¿öÅ© ¸¸µé±â
°Á ½ÃÀÛÀü 1ºÐ ½ºÇÇÄ¡
¸Å¿ì ¾È³çÇϽʴϴÙ! È÷µùÅ© ÀÔ´Ï´Ù!
¿°ÅëÀÌ Âɱ׶óµé¸¸ÇÑ ÃßÀ§°¡ ´Ù°¡¿À´Â ¿ÍÁß¿¡µµ ÄÚµù¿¡ ¿©³äÀÌ ¾ø´Â ¼Õ°¡¶ô °üÀýÀº ¾È³çµé ÇϽʴϱî!
°³¹ßÀÚÀÇ ¶¡³»´Â ¸íǰ ä³Î5¹ø Çâ¼öº¸´Ù Çâ±â·Ó´Ù°í ´©±º°¡°¡ ¸»Çß¾ú½À´Ï´Ù.
°¡Àå ¸Å·ÂÀûÀÎ ¶¡³»ÀÇ ¼ÒÀ¯ÀÚ°¡ ´©±¸ÀÎÁö¸¦ ã¾Æ³»´Â Àç±ÍÇÔ¼ö´Â ¾ÆÁ÷µµ ²¿¸®¸¦ ¹°°í ¼öÇà Áß ÀÔ´Ï´Ù.
Áö³¹ø ½ºÆ®·¹Äª °Á´ Àßµé º¸¼Ì³ª¿ä? °Á ¾÷µ¥ÀÌÆ®°¡ ³Ê¹« ´Ê¾î¼ ´Ù ±î Àâ¼ö¼Ì´Ù±¸¿ä? ¤Ì¤Ì
Á˼ÛÇÕ´Ï´Ù. ³ª¸§´ë·Î ¹Ù»Û ô ÇÏ´À¶ó ¸¹ÀÌ ´Ê¾ú½À´Ï´Ù. Çѹø¸¸ ºÁÁÖ½Ã¸é »ç¶ûÇØ µå¸³´Ï´Ù.
ÀÚ! À̹ø ½Ã°£ºÎÅÍ º»°ÝÀûÀÎ OOP °Á¿¡ µé¾î °©´Ï´Ù.
±Í¸¦ ÂÐ~~²ý ¼¼¿ì°í ´«À» ±ô~ºý ±ô~ºý °Å¸®¸é¼ °Á¸¦ Àоî Áֽñ⠹ٶø´Ï´Ù.
ÀÚ!! Å« ¹Ú¼ö ÁÖ¼¼¿ä!!
ÄÚ¾î ÀÚ¹Ù½ºÅ©¸³Æ® °´Ã¼
ÀÚ¹Ù½ºÅ©¸³Æ®´Â ¸î °¡Áö ³»Àå °´Ã¼¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. Áö±ÝºÎÅÍ ÀÚ¹Ù½ºÅ©¸³Æ®°¡ °¡Áö°í ÀÖ´Â ´ëÇ¥ÀûÀÎ ³»Àå °´Ã¼µéÀ» °£´ÜÇÏ°Ô ½Ã½ÄÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
1. Object °´Ã¼
Object °´Ã¼´Â °¡Àå »óÀ§ ¼öÁØ(top-level)ÀÇ Àü¿ª(Global) °´Ã¼ÀÌ¸ç ºñ¾îÀÖ´Â(empty) ²®µ¥±â °´Ã¼ ÀÔ´Ï´Ù.
½ºÆÄ¸£Å¸ ¿Õ±¹¿¡ »ì´ø Object¾¾(19¼¼)´Â "³ ¾Æ¹«Â¦¿¡µµ ¾µ¸ð°¡ ¾ø´Â °´Ã¼¾ß.." Çϸç ÀÚ±«°¨°ú ÇѼûÀ¸·Î ¿©·¯ ³¯À» º¸³»°í ÀÖ¾ú½À´Ï´Ù. ½Ã°£Àº Èê·¯ Èê·¯! Object¾¾´Â prototypeÀ̶õ ¾Æ¸§´ä°í ¸Å·ÂÀûÀÌ°í °ü´ëÇÑ ÇÁ·ÎÆÛƼ¸¦ ½ÅºÎ·Î ¸Â¾Æ µé¿©¼ °áÈ¥À» Çß½À´Ï´Ù. ±×³à´Â Object¿¡°Ô Àڽۨ°ú Èñ¸ÁÀ» ¾È°Ü ÁÖ¾ú°í, ÀڽĵéÀ» ¼øÇ³¼øÇ³ ¸¹ÀÌ ³º°í ÇູÇÏ°Ô »ì¾Ò½À´Ï´Ù. ±× Áß »ç¶÷µé¿¡°Ô °¡Àå ¾Ë·ÁÁø ÀڽĵéÀÇ À̸§Àº "Á¦ÀÓ½º String", "¸¶°¡·¿ Number", "¼£·µ Date", "¸¶ÀÌŬ ºò Math", "Àª¸®¾ö Array" ÀÔ´Ï´Ù.
¹º ¾ê±â³Ä°í¿ä? ±×·¸½À´Ï´Ù! ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ¸ðµç °´Ã¼´Â ÃÖ»óÀ§ ¼öÁØÀÇ Àü¿ª °´Ã¼ÀÎ Object·Î ºÎÅÍ ÆÄ»ýµÇ¾î È®Àå µÈ °ÍÀÔ´Ï´Ù. ±×°ÍÀÌ ¿©·¯ºÐÀÌ Á÷Á¢ ¸¸µç »ç¿ëÀÚ Á¤ÀÇ °´Ã¼¶óµµ ¸»ÀÌÁÒ.
¸î °¡Áö ´ëÇ¥ÀûÀÎ ÇÁ·ÎÆÛƼ¿Í ¸Þ¼µå´Â ´ÙÀ½°ú °°½À´Ï´Ù.
- ÇÁ·ÎÆÛƼ
1. constructor : »ý¼ºÀÚ ¸Þ¼µå¸¦ ¸í½Ã ÇÕ´Ï´Ù.
2. prototype : Ãß°¡ÀûÀÎ ¸Þ¼µå¿Í ÇÁ·ÎÆÛƼ¸¦ ¸í½ÃÇÒ ¼ö ÀÖ´Â ¸Å·Â ¸¸Á¡ÀÇ ÇÁ·ÎÆÛƼ ÀÔ´Ï´Ù.
- ¸Þ¼µå
1. hasOwnProperty( s ) : ÇØ´ç ÇÁ·ÎÆÛƼ°¡ Á¸Àç ÇÏ´ÂÁö¸¦ ºÒ¸®¾ð Çü½ÄÀ¸·Î ¹Ýȯ ÇÕ´Ï´Ù.
2. toString() : °´Ã¼ÀÇ »óŸ¦ ¹®ÀÚ¿ Çü½ÄÀ¸·Î ¹Ýȯ ÇÕ´Ï´Ù.
3. isPrototypeOf( o ) : ´Ù¸¥ °´Ã¼·ÎºÎÅÍ È®Àå µÇ¾ú´ÂÁö¸¦ ºÒ¸®¾ð Çü½ÄÀ¸·Î ¹Ýȯ ÇÕ´Ï´Ù.
ÀÌ·¸µí Object °´Ã¼´Â °´Ã¼¸¦ È®ÀåÇϱâ À§ÇÑ ÇÁ·ÎÆÛƼ¿Í ¸Þ¼µåµéÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ³ª¸ÓÁö °´Ã¼µéÀº ¸ðµÎ°¡ Àß ¾Ë°í ÀÖ´Â ³»¿ëÀÌ´Ï °£´ÜÇÑ ¼³¸í°ú ¸í¼¼ ¸µÅ©·Î ´ë½Å ÇϰڽÀ´Ï´Ù.
2. String °´Ã¼
String °´Ã¼´Â ¹®ÀÚ¿(¿¬¼ÓÀûÀÎ ¹®ÀÚµéÀÇ ¿¬¼Ó) Çü½ÄÀÇ µ¥ÀÌÅ͸¦ ´Ù·ç´Â °´Ã¼ÀÔ´Ï´Ù.
String °´Ã¼ÀÇ ¸í¼¼ º¸±â
3. Number °´Ã¼
Number °´Ã¼´Â ¼ýÀÚ Çü½ÄÀÇ µ¥ÀÌÅ͸¦ ´Ù·ç´Â °´Ã¼ÀÔ´Ï´Ù.
Number °´Ã¼ÀÇ ¸í¼¼ º¸±â
4. Math °´Ã¼
Math °´Ã¼´Â ¼öÇÐÀûÀÎ °è»êÀ» ´Ù·ç´Â °´Ã¼ÀÔ´Ï´Ù.
Math °´Ã¼ÀÇ ¸í¼¼ º¸±â
5. Array °´Ã¼
Array °´Ã¼´Â °´Ã¼ÀÇ ¿¬¼ÓÀûÀÎ ¹è¿À» ´Ù·ç´Â °´Ã¼ÀÔ´Ï´Ù.
Array °´Ã¼ÀÇ ¸í¼¼ º¸±â
6. Date °´Ã¼
Date °´Ã¼´Â ³¯Â¥ Çü½ÄÀÇ µ¥ÀÌÅ͸¦ ´Ù·ç´Â °´Ã¼ÀÔ´Ï´Ù.
Date °´Ã¼ÀÇ ¸í¼¼ º¸±â
ÀÚ¹Ù½ºÅ©¸³Æ® °´Ã¼ ÀνºÅϽº »ý¼º
ÀÚ!! Áö±Ý±îÁö ÄÚ¾î °´Ã¼µéÀ» ¾Ë¾Æº¸¾Ò½À´Ï´Ù. À§¿¡¼ »ìÆìº» °´Ã¼ ¸í¼¼¿¡ µû¶ó °´Ã¼ ÀνºÅϽº¸¦ »ý¼ºÇØ º¸ÀÚ±¸¿ä~ ½Ç½À¿¡ ÇÊ¿äÇÑ Áغñ¹°Àº "new" Ű¿öµå ÀÔ´Ï´Ù.
°´Ã¼ÀÇ ÀνºÅϽº¸¦ »ý¼ºÀº ´ÙÀ½°ú °°ÀÌ new Ű¿öµå¿Í »ý¼ºÀÚ ¸Þ¼µå¸¦ ¸í½ÃÇÔÀ¸·Î½á »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ç¿¬ÇÑ À̾߱âÀÌÁö¸¸ °´Ã¼ÀÇ À̸§°ú »ý¼ºÀÚ ¸Þ¼µåÀÇ À̸§Àº µ¿ÀÏ ÇÕ´Ï´Ù. ¾ÆÁÖ °£´ÜÇÑ ¿¹Á¦¸¦ »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Simple is best!
1 2 |
var o1 = new String("Hello My Girl"); //String °´Ã¼
var o2 = new Number(1024); //Number °´Ã¼ |
ÀÌÂë¿¡¼ ¿¹»óµÇ´Â Áú¹®ÀÌ ÀÖ½À´Ï´Ù.
±è´ö¹è : ±è´ö¹è ÀÔ´Ï´Ù. var o = "Hello My Girl"; ó·³ ¼±¾ðÀ» ÇØµµ String °´Ã¼°¡ ¼±¾ðµÇÁö ¾Ê³ª¿ä?
ÁÁÀº Áú¹®ÀÔ´Ï´Ù. ±×·¯ÇÑ ¼±¾ðÀ¸·Î´Â °´Ã¼ÀÇ ÀνºÅϽº°¡ »ý¼ºµÇÁö ¾ÊÀ¸¸ç, ±×°ÍÀº ´ÜÁö ±âº» µ¥ÀÌÅÍ(Primitive Data)ÀÏ »ÓÀÔ´Ï´Ù. À§ÀÇ ¿¹Á¦Ã³·³ new Ű¿öµå¸¦ »ç¿ëÇØ¼ String °´Ã¼ÀÇ ÀνºÅϽº°¡ »ý¼º µÈ ÈÄ ±× ÀνºÅϽºÀÇ Æ÷ÀÎÅ͸¦ º¯¼ö¿¡ ÇÒ´çÇÏ°í »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß¸¸ ºñ·Î¼Ò °´Ã¼°¡ µÇ´Â °Í ÀÔ´Ï´Ù.
¸»¾¸ µå¸®´Â ¼ø°£ ±è´ö¹è¾¾°¡ ¶Ç ¼ÕÀ» µé¾î Áּ̳׿ä. ¶Ç ´Ù¸¥ Áú¹®ÀÌ ÀÖÀ¸½Å°¡ º¾´Ï´Ù. ´Ù °°ÀÌ µé¾îº¸µµ·Ï ÇÏÁÒ.
±è´ö¹è : ±è´ö¹è ÀÔ´Ï´Ù. ±×·¸´Ù¸é °´Ã¼ ÀνºÅϽºÀÇ »ç¿ëÀÌ ³¡³ ´ÙÀ½ÀÇ ¸Þ¸ð¸® ÇØÁ¦´Â ¾î¶»°Ô Çϳª¿ä?
Á¤¸» Á¤¸» ÁÁÀº Áú¹®ÀÔ´Ï´Ù. °´Ã¼ ÀνºÅϽº Æ÷ÀÎÅ͸¦ ´ã°í ÀÖ´Â º¯¼ö¿¡ nullÀ» ÇÒ´ç Çϱ⸸ ÇÏ¸é µË´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¸»ÀÌÁÒ..
1 2 |
var o1 = new String("Hello My Girl"); //String °´Ã¼
o2 = null; |
»ç½Ç ÀÚ¹Ù½ºÅ©¸³Æ®¿¡µµ °¡ºñÁö Ä÷ºÅÍ(garbage collector)¶ó´Â ¾²·¹±âÂ÷°¡ ÀÖ½À´Ï´Ù¸¸ 100%ÀÇ ½Å·Úµµ¸¦ °¡Áö°í ÀÖÁö ¾Ê½À´Ï´Ù. ¾²·¹±âÂ÷°¡ ã¾Æ³»Áö ¸øÇÑ ¾²·¹±â°¡ ¸Þ¸ð¸® ¾îµò°¡¿¡ ¼û¾îÀÖÀ» ¼ö Àֱ⠶§¹®ÀÌÁÒ(´ëÇ¥ÀûÀ¸·Î Ajax¿¡¼ ÀÚÁÖ ¾²°Ô µÇ´Â À͸íÇÔ¼ö-closure function-°¡ ±×·¯ ÇÕ´Ï´Ù). ±â´ëÇÏÁö ¸øÇß´ø ¸Þ¸ð¸® ³¶ºñ°¡ °è¼ÓÇØ¼ ´©ÀûµÇ¸é ºê¶ó¿ìÀúÀÇ ¸Þ¸ð¸® Á¡À¯À²ÀÌ ÇöÀúÈ÷ Áõ°¡ÇÏ°Ô µÇ¸ç, ±× °á°ú ¿ì¸®ÀÇ À¥ ¾îÇø®ÄÉÀ̼ÇÀº »ê¼Ò°¡ ºÎÁ·ÇÏ¿© ÇíÇí °Å¸®°Ô µÉ °ÍÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ ¸Þ¸ð¸® ³¶ºñ¸¦ ÁÙÀ̱â À§Çؼ ¿ì¸® °³¹ßÀÚµéÀÌ ¾ÆÁÖ ¾à°£ÀÇ ¼ö°í¸¦ ÇØ¾ß ÇÕ´Ï´Ù. ¹Ýµå½Ã »ç¿ëÀÌ ³¡³ °´Ã¼´Â null·Î Ãʱâȸ¦ ½ÃÄÑ ÁÖ¾î¼ ÀνºÅϽº¸¦ »ç»ÓÈ÷ ¾²·¹±âÅë¿¡ ´ã´Â ¾ÆÁÖ °£´ÜÇÑ ¼ö°í·Î ¿ì¸®´Â Çàº¹ÇØÁú ¼ö ÀÖ½À´Ï´Ù.
ÇÑ ÁÙ ¿ä¾à : ÀνºÅϽº »ý¼º°ú ¸Þ¸ð¸® ÇØÁ¦´Â ¸Å¿ì ½±´Ù.
¶Ç ÇÑ ÁÙ ¿ä¾à : ÀÚ¹Ù½ºÅ©¸³Æ® °¡ºñÁö Ä÷ºÅͰ¡ ±Ã±ÝÇϽŠºÐÀº ¿ä¿À¿À¿À±â Ŭ¸¯!!
prototype!! ÀÚ¹Ù½ºÅ©¸³Æ® °´Ã¼¸¦ Æ©´×ÇØ¼ »óÅÇÑ ³¯°³¸¦ ´ÞÀÚ!!
ÀÚ~ ÀÌÁ¦ ¸Å·ÂÀûÀÎ prototypeÀ» »ç¿ëÇØ º¾½Ã´Ù. ÀÏ´Ü ¿¹Á¦ºÎÅÍ º¸ÀÚ±¸¿ä~ ¾ÆÁÖ ½±°í °£´ÜÇÏ´ä´Ï´Ù~
1 2 3 4 5 6 7 8 9 10 11 |
String.prototype.myComment;
String.prototype.getLength = function(){ return this.length; }
String.prototype.toString = function(){ return "±è´ö¹è´ÔÀÇ ¸» : " + this.valueOf(); }
var o = new String("Hello My Girl");
o.myComment = "This is Object";
alert( o.myComment ); //"This is Object"
alert( o.getLength() ); //13
alert( o ); //"±è´ö¹è´ÔÀÇ ¸» : Hello My Girl" |
ÀÚ~ Á¦°¡ ¹«½¼ ÁþÀ» ÀúÁú·¯ ³õ¾ÒÀ»±î¿ä? ÀÏ´Ü Â÷±ÙÂ÷±Ù ¤¾î º¸°Ú½À´Ï´Ù.
1) String.prototype.myComment;
String °´Ã¼¿¡ myComment¶ó´Â ÇÁ·ÎÆÛƼ¸¦ Ãß°¡ Çß½À´Ï´Ù.
2) String.prototype.getLength = function(){ return this.length; }
String °´Ã¼¿¡ ¹®ÀÚ¿ÀÇ ±æÀ̸¦ ¹ÝȯÇÏ´Â ¸Þ¼µå¸¦ Ãß°¡ Çß½À´Ï´Ù.
3) String.prototype.toString = function(){ return "±è´ö¹è´ÔÀÇ ¸» : " + this.valueOf(); }
À̰ÍÀº String °´Ã¼ÀÇ »óÅÂ(¹®ÀÚ¿)À» ¹ÝȯÇÏ´Â toString() ¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵ù(Overriding)ÇÑ °ÍÀÔ´Ï´Ù(¿À¹ö¶óÀ̵ùÀº »ó¼Ó¹ÞÀº °´Ã¼ÀÇ ¸Þ¼µå¸¦ ´Ù½Ã Á¤ÀÇÇÏ´Â °Í ÀÔ´Ï´Ù). toString() ¸Þ¼µå´Â °´Ã¼ »óÅÂÀÇ ¹®ÀÚ¿ Ç¥ÇöÀ» ¹ÝȯÇÏ´Â Object °´Ã¼ÀÇ ¸Þ¼µå À̸ç, À̸¦ »ó¼Ó¹ÞÀº ÄÚ¾î °´Ã¼¿¡ ¿À¹ö¶óÀ̵ù µÇ¾î ¹Ì¸® ±¸ÇöÀÌ µÇ¾î ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ toString()ÀÌ ±¸ÇöµÇÁö ¾ÊÀº Object °´Ã¼¿Í HTML °´Ã¼µé, ±×¸®°í »ç¿ëÀÚ Á¤ÀÇ °´Ã¼¿¡¼´Â "[Object]"¶ó´Â ¹®ÀÚ¿ÀÌ ¹Ýȯ µË´Ï´Ù. ¿©·¯ºÐÀÌ Á÷Á¢ ¸¸µå½Å »ç¿ëÀÚ Á¤ÀÇ °´Ã¼ÀÇ »óŸ¦ ¹®ÀÚ¿·Î Ç¥ÇöÇÏ°í ½Í´Ù¸é À§ÀÇ ¿¹Á¦Ã³·³ toString() ¸Þ¼µå¸¦ Á÷Á¢ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.
¿ì¸®´Â À§ÀÇ ¿¹Á¦¸¦ ÅëÇØ ±âº»ÀûÀÎ String °´Ã¼¿¡ 1°³ÀÇ ÇÁ·ÎÆÛƼ¿Í 1°³ÀÇ ¸Þ¼µå Ãß°¡, ±×¸®°í 1°³ÀÇ ¸Þ¼µå ¿À¹ö¶óÀ̵ùÀ» ±¸Çö Çß½À´Ï´Ù. ´ÜÁö prototype ÇÁ·ÎÆÛƼ Çϳª·Î ¸»ÀÌÁÒ. Ãß°¡ÀûÀÎ ÇÁ·ÎÆÛƼ/¸Þ¼µåÀÇ »ç¿ë¹ýÀº À§ÀÇ ¿¹Á¦Ã³·³ ¾ÆÁÖ ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À¹ö·Îµù(Overloading)µµ ±Ã±ÝÇÏ´Ù°í¿ä? ¾Æ½±°Ôµµ ¿À¹ö·ÎµùÀº Áö¿øµÇÁö ¾Ê½À´Ï´Ù¸¸ ¸î °¡Áö ²Ä¼ö¸¦ »ç¿ëÇØ¼ Á¦ÇÑÀûÀ¸·Î ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À¹ö·Îµù¿¡ ´ëÇØ¼´Â 4¹øÂ° ½Ã°£¿¡ ´Ù·ï º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
¼¼ÁÙ ¿ä¾à
1. ÀνºÅϽº°¡ ¸Þ¸ð¸®¿¡ ÀÚ¸® Àâ¾Æ¾ß ÁøÁ¤ÇÑ °´Ã¼´Ù.
2. prototypeÀº ¿ø´õ°É½ºº¸´Ù ¿¹»Ú´Ù.
3. ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼µµ ¿À¹ö¶óÀ̵ùÀÌ °¡´ÉÇÏ´Ù. prototypeÀÌ ÀÖÀ¸´Ï±î!
±×·³ ´ÙÀ½ ½Ã°£¿¡ ºË°Ú½À´Ï´Ù! ä³Î °íÁ¤!
°Á ¸ñ·ÏÀ¸·Î..
|