´Ù¸¥ Function °³Ã¼ÀÇ ¸Þ¼­µå¸¦ Àû¿ëÇÏ¿© ±× °³Ã¼¸¦ ÇöÀç °³Ã¼·Î ´ëüÇÑ´Ù.

[functionObj].apply([thisObj[,arguArray]])
[function] apply([thisObj[:Object][,arguArray[:{Array|arguments}]]])
Àμö/ÆĶó¸ÞÅÍ
thisObj : (ÇöÀç °³Ã¼)
¼±ÅÃÀûÀÎ ¿ä¼ÒÀ̸ç, ÇöÀç °³Ã¼·Î »ç¿ëµÉ °³Ã¼ÀÌ´Ù.
arguArray : (Àμö °³Ã¼)
¼±ÅÃÀûÀÎ ¿ä¼ÒÀ̸ç, ±â´ÉÇÔ¼ö¿¡ Àü´ÞµÉ ÀμöÀÇ ¹è¿­º¯¼ö(arguments)ÀÌ´Ù.
¼³¸í

arguArray°¡ À¯È¿ÇÑ ¹è¿­º¯¼öÀ̳ª arguments °³Ã¼°¡ ¾Æ´Ï¸é TypeError°¡ ¹ß»ýÇÑ´Ù.

arguArray³ª thisObj°¡ Á¦°øµÇÁö ¾ÊÀ¸¸é Global °³Ã¼°¡ thisObj·Î »ç¿ëµÇ°í Àμö´Â Àü´ÞµÇÁö ¾Ê´Â´Ù.

Ư±â
apply ¸Þ¼­µå´Â call ¸Þ¼­µå¿Í ¾ÆÁÖ À¯»çÇÏ´Ù.
call ¸Þ¼­µå´Â arguments Ä÷º¼ÇÀ» ÆĶó¸Þ¼­·Î »ç¿ëÇÒ ¼ö ¾øÁö¸¸ apply ¸Þ¼­µå´Â »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡¸¸ ´Ù¸£´Ù.

¸¸ÀÏ thisObj¿Í arguArray°¡ ¸ðµÎ ¾øÀ¸¸é, Global.ObjectÀÇ Àü´Þ¿¡ thisObj°¡ arguments ¾øÀÌ Àü´ÞµÈ´Ù.

Ãß°¡

apply ¸Þ¼­µå´Â ±â´ÉÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô ÇÏ°í, Å°¿öµå this´Â ±× ±â´ÉÇÔ¼ö ¼Ó¿¡¼­ ÂüÁ¶µÈ´Ù. thisObj´Â °³Ã¼À̾î¾ß ÇÏ°í, È£ÃâµÈ ±â´ÉÇÔ¼ö ¼Ó¿¡¼­ this´Â thisObj °³Ã¼¸¦ ÂüÁ¶ÇÑ´Ù. apply ¸Þ¼­µåÀÇ Àμö·Î ³ª¿À´Â arguArray´Â ¹è¿­º¯¼öÀ̸ç, ÀÌ ¹è¿­º¯¼öÀÇ °¢ ¿ä¼Ò´Â È£ÃâµÇ´Â ±â´ÉÇÔ¼ö¿¡ Àü´ÞµÈ´Ù. ÀÌ arguArray´Â ¹è¿­º¯¼ö ¹®ÀÚ¿­À̰ųª ±â´ÉÇÔ¼öÀÇ arguments ¹è¿­º¯¼ö °³Ã¼ÀÌ´Ù. apply ¸Þ¼­µå´Â °³Ã¼ÀÇ Àü´ÞÀ» µ¿±âÈ­¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.



callPerson ±â´ÉÇÔ¼ö´Â ÀÚüÀÇ Àμö·Î ¹ÞÀº IdNumb¸¦ Æ÷ÇÔÇÏ¿©, apply ¸Þ¼­µå·Î Person ±â´ÉÇÔ¼ö¸¦ È£ÃâÇÏ°í ¹è¿­º¯¼ö¸¦ Àü´ÞÇÑ´Ù.
µû¶ó¼­ Person ±â´ÉÇÔ¼ö ¼Ó¿¡¼­´Â this Å°¿öµå´Â Person °¡ ¾Æ´Ï¶ó callPerson °³Ã¼¸¦ ÂüÁ¶ÇÑ´Ù.
ÀÌ ¹æ½ÄÀ¸·Î callPerson °³Ã¼´Â ±× ¼Ó¼ºµéÀ» Person °³Ã¼¿¡ Àü´ÞÇÑ´Ù. ÇÒ´çµÈ ¼Ó¼ºÀº myPerson °³Ã¼¿¡ ¹Ý¿µµÈ´Ù.

<SCRIPT>
function Person(pName,gender,birth){ // ±â´ÉÇÔ¼ö¸¦ ¸¸µç´Ù. Person Àº ±â´ÉÇÔ¼ö °³Ã¼ÀÌ´Ù.
  this.pName=pName; // ¹ÞÀº Àμö¸¦ °³Ã¼ ¼Ó¼º¿¡ ÇÒ´çÇÑ´Ù. this ´Â callPerson ±â´ÉÇÔ¼ö °³Ã¼(myPerson)¸¦ ÂüÁ¶ÇÑ´Ù.
  this.gender=gender;
  this.birth=birth;
}

function callPerson(IdNumb,pName,gender,birth){ // ±â´ÉÇÔ¼ö¸¦ ¸¸µç´Ù.
  this.IdNumb=IdNumb; // ¹ÞÀº Àμö¸¦ °³Ã¼ ¼Ó¼º¿¡ ÇÒ´çÇÑ´Ù.
  Person.apply(this,new Array(pName,gender,birth)); // ¼Ó¼ºµéÀÇ ¹è¿­º¯¼ö¸¦ ±â´ÉÇÔ¼ö Person¿¡ Àü´ÞÇÑ´Ù.
}

myPerson=new callPerson(12345,'È«±æµ¿','³²',1900);
document.write('È£ÃâÇÑ »ç¶÷Àº ('+myPerson.pName +', '+myPerson.gender +', '+myPerson.birth  +')ÀÌ´Ù.')
</SCRIPT>