¸ÅÊö
¡¡¡¡º¯ÊýÊǽøÐÐÄ£¿é»¯
³ÌÐòÉè¼ÆµÄ»ù´
¡£¬±àд¸´ÔÓµÄAjaxÓ¦ÓÃ
³ÌÐò£¬±ØÐë¶Ôº¯ÊýÓиüÉîÈëµÄÁ˽â
¡£JavaScriptÖеĺ¯Êý²»Í¬ÓÚÆäËûµÄÓïÑÔ
£¬Ã¿¸öº¯Êý¶¼ÊÇ×÷Ϊһ¸ö¶ÔÏó±»Î¬»¤ºÍÔËÐеġ£Í¨¹ýº¯Êý¶ÔÏóµÄÐÔÖÊ£¬¿ÉÒԺܷ½±ãµÄ½«Ò»¸öº¯Êý¸³Öµ¸øÒ»¸ö±äÁ¿»òÕß½«º¯Êý×÷Ϊ²ÎÊý´«µÝ¡£ÔÚ¼ÌÐø½²Êö֮ǰ£¬ÏÈ¿´Ò»Ïº¯ÊýµÄʹÓÃÓï·¨£º
function func1(¡){¡} var func2=function(¡){¡}; var func3=function func4(¡){¡}; var func5=new Function(); |
¡¡¡¡ÕâЩ¶¼ÊÇÉùÃ÷º¯ÊýµÄÕýÈ·Óï·¨¡£ËüÃǺÍÆäËûÓïÑÔÖг£¼ûµÄº¯Êý»ò֮ǰ½éÉܵĺ¯Êý¶¨Ò巽ʽÓÐןܴóµÄÇø±ð¡£ÄÇôÔÚJavaScriptÖÐΪʲôÄÜÕâôд£¿ËüËù×ñѵÄÓï·¨ÊÇʲôÄØ£¿ÏÂÃ潫½éÉÜÕâЩÄÚÈÝ¡£
¡¡¡¡ÈÏʶº¯Êý¶ÔÏó£¨Function Object£©
¡¡¡¡¿ÉÒÔÓÃfunction¹Ø¼ü×Ö¶¨ÒåÒ»¸öº¯Êý£¬²¢ÎªÃ¿¸öº¯ÊýÖ¸¶¨Ò»¸öº¯ÊýÃû£¬Í¨¹ýº¯ÊýÃûÀ´½øÐе÷Óá£ÔÚJavaScript½âÊÍÖ´ÐÐʱ£¬º¯Êý¶¼ÊDZ»Î¬»¤ÎªÒ»¸ö¶ÔÏó£¬Õâ¾ÍÊÇÒª½éÉܵĺ¯Êý¶ÔÏó£¨Function Object£©¡£
¡¡¡¡º¯Êý¶ÔÏóÓëÆäËûÓû§Ëù¶¨ÒåµÄ¶ÔÏóÓÐ×ű¾ÖʵÄÇø±ð£¬ÕâÒ»Àà¶ÔÏó±»³Æ֮ΪÄÚ²¿¶ÔÏó£¬ÀýÈçÈÕÆÚ¶ÔÏó£¨Date£©¡¢Êý×é¶ÔÏó£¨Array£©¡¢×Ö·û´®¶ÔÏó£¨String£©¶¼ÊôÓÚÄÚ²¿¶ÔÏó¡£ÕâЩÄÚÖöÔÏóµÄ¹¹ÔìÆ÷ÊÇÓÉJavaScript±¾ÉíËù¶¨ÒåµÄ£ºÍ¨¹ýÖ´ÐÐnew Array()ÕâÑùµÄÓï¾ä·µ»ØÒ»¸ö¶ÔÏó£¬JavaScriptÄÚ²¿ÓÐÒ»Ì×»úÖÆÀ´³õʼ»¯·µ»ØµÄ¶ÔÏ󣬶ø²»ÊÇÓÉÓû§À´Ö¸¶¨¶ÔÏóµÄ¹¹Ô췽ʽ¡£
¡¡¡¡ÔÚJavaScriptÖУ¬º¯Êý¶ÔÏó¶ÔÓ¦µÄÀàÐÍÊÇFunction£¬ÕýÈçÊý×é¶ÔÏó¶ÔÓ¦µÄÀàÐÍÊÇArray£¬ÈÕÆÚ¶ÔÏó¶ÔÓ¦µÄÀàÐÍÊÇDateÒ»Ñù£¬¿ÉÒÔͨ¹ýnew Function()À´´´½¨Ò»¸öº¯Êý¶ÔÏó£¬Ò²¿ÉÒÔͨ¹ýfunction¹Ø¼ü×ÖÀ´´´½¨Ò»¸ö¶ÔÏó¡£ÎªÁ˱ãÓÚÀí½â£¬ÎÒÃDZȽϺ¯Êý¶ÔÏóµÄ´´½¨ºÍÊý×é¶ÔÏóµÄ´´½¨¡£ÏÈ¿´Êý×é¶ÔÏó£ºÏÂÃæÁ½ÐдúÂ붼ÊÇ´´½¨Ò»¸öÊý×é¶ÔÏómyArray£º
var myArray=[]; //µÈ¼ÛÓÚ var myArray=new Array(); ͬÑù£¬ÏÂÃæµÄÁ½¶Î´úÂëÒ²¶¼ÊÇ´´½¨Ò»¸öº¯ÊýmyFunction£º function myFunction(a,b){ return a+b; } //µÈ¼ÛÓÚ var myFunction=new Function("a","b","return a+b"); |
¡¡¡¡Í¨¹ýºÍ¹¹ÔìÊý×é¶ÔÏóÓï¾äµÄ±È½Ï£¬¿ÉÒÔÇå³þµÄ¿´µ½º¯Êý¶ÔÏó±¾ÖÊ£¬Ç°Ãæ½éÉܵĺ¯ÊýÉùÃ÷ÊÇÉÏÊö´úÂëµÄµÚÒ»ÖÖ·½Ê½£¬¶øÔÚ½âÊÍÆ÷ÄÚ²¿£¬µ±Óöµ½ÕâÖÖÓ﷨ʱ£¬¾Í»á×Ô¶¯¹¹ÔìÒ»¸öFunction¶ÔÏ󣬽«º¯Êý×÷Ϊһ¸öÄÚ²¿µÄ¶ÔÏóÀ´´æ´¢ºÍÔËÐС£´ÓÕâÀïÒ²¿ÉÒÔ¿´µ½£¬Ò»¸öº¯Êý¶ÔÏóÃû³Æ£¨º¯Êý±äÁ¿£©ºÍÒ»¸öÆÕͨ±äÁ¿Ãû³Æ¾ßÓÐͬÑùµÄ¹æ·¶£¬¶¼¿ÉÒÔͨ¹ý±äÁ¿ÃûÀ´ÒýÓÃÕâ¸ö±äÁ¿£¬µ«ÊǺ¯Êý±äÁ¿ÃûºóÃæ¿ÉÒÔ¸úÉÏÀ¨ºÅºÍ²ÎÊýÁбíÀ´½øÐк¯Êýµ÷Óá£
¡¡¡¡ÓÃnew Function()µÄÐÎʽÀ´´´½¨Ò»¸öº¯Êý²»³£¼û£¬ÒòΪһ¸öº¯ÊýÌåͨ³£»áÓжàÌõÓï¾ä£¬Èç¹û½«ËüÃÇÒÔÒ»¸ö×Ö·û´®µÄÐÎʽ×÷Ϊ²ÎÊý´«µÝ£¬´úÂëµÄ¿É¶ÁÐԲÏÂÃæ½éÉÜÒ»ÏÂÆäʹÓÃÓï·¨£º
var funcName=new Function(p1,p2,...,pn,body); |
¡¡¡¡²ÎÊýµÄÀàÐͶ¼ÊÇ×Ö·û´®£¬p1µ½pn±íʾËù´´½¨º¯ÊýµÄ²ÎÊýÃû³ÆÁÐ±í£¬body±íʾËù´´½¨º¯ÊýµÄº¯ÊýÌåÓï¾ä£¬funcName¾ÍÊÇËù´´½¨º¯ÊýµÄÃû³Æ¡£¿ÉÒÔ²»Ö¸¶¨ÈκβÎÊý´´½¨Ò»¸ö¿Õº¯Êý£¬²»Ö¸¶¨funcName´´½¨Ò»¸öÎÞÃûº¯Êý£¬µ±È»ÄÇÑùµÄº¯ÊýûÓÐÈκÎÒâÒå¡£
¡¡¡¡ÐèҪעÒâµÄÊÇ£¬p1µ½pnÊDzÎÊýÃû³ÆµÄÁÐ±í£¬¼´p1²»½öÄÜ´ú±íÒ»¸ö²ÎÊý£¬ËüÒ²¿ÉÒÔÊÇÒ»¸ö¶ººÅ¸ô¿ªµÄ²ÎÊýÁÐ±í£¬ÀýÈçÏÂÃæµÄ¶¨ÒåÊǵȼ۵ģº
new Function("a", "b", "c", "return a+b+c") new Function("a, b, c", "return a+b+c") new Function("a,b", "c", "return a+b+c") |
¡¡¡¡JavaScriptÒýÈëFunctionÀàÐͲ¢Ìṩnew Function()ÕâÑùµÄÓï·¨ÊÇÒòΪº¯Êý¶ÔÏóÌí¼ÓÊôÐԺͷ½·¨¾Í±ØÐë½èÖúÓÚFunctionÕâ¸öÀàÐÍ¡£
º¯ÊýµÄ±¾ÖÊÊÇÒ»¸öÄÚ²¿¶ÔÏó£¬ÓÉJavaScript½âÊÍÆ÷¾ö¶¨ÆäÔËÐз½Ê½¡£Í¨¹ýÉÏÊö´úÂë´´½¨µÄº¯Êý£¬ÔÚ
³ÌÐòÖпÉÒÔʹÓú¯ÊýÃû½øÐе÷Óᣱ¾½Ú¿ªÍ·ÁгöµÄº¯Êý¶¨ÒåÎÊÌâÒ²µÃµ½Á˽âÊÍ¡£×¢Òâ¿ÉÖ±½ÓÔÚº¯ÊýÉùÃ÷ºóÃæ¼ÓÉÏÀ¨ºÅ¾Í±íʾ´´½¨Íê³ÉºóÁ¢¼´½øÐк¯Êýµ÷Óã¬ÀýÈ磺
var i=function (a,b){ return a+b; }(1,2); alert(i); |
¡¡¡¡Õâ¶Î´úÂë»áÏÔʾ±äÁ¿iµÄÖµµÈÓÚ3¡£iÊDZíʾ·µ»ØµÄÖµ£¬¶ø²»ÊÇ´´½¨µÄº¯Êý£¬ÒòΪÀ¨ºÅ¡°(¡±±ÈµÈºÅ¡°=¡±Óиü¸ßµÄÓÅÏȼ¶¡£ÕâÑùµÄ´úÂë¿ÉÄܲ¢²»³£Ó㬵«µ±Óû§ÏëÔںܳ¤µÄ´úÂë¶ÎÖнøÐÐÄ£¿é»¯Éè¼Æ»òÕßÏë±ÜÃâÃüÃû³åÍ»£¬ÕâÊÇÒ»¸ö²»´íµÄ½â¾ö°ì·¨¡£
¡¡¡¡ÐèҪעÒâµÄÊÇ£¬¾¡¹ÜÏÂÃæÁ½ÖÖ´´½¨º¯ÊýµÄ·½·¨Êǵȼ۵ģº
function funcName(){ //º¯ÊýÌå } //µÈ¼ÛÓÚ var funcName=function(){ //º¯ÊýÌå } |
¡¡¡¡µ«Ç°ÃæÒ»ÖÖ·½Ê½´´½¨µÄÊÇÓÐÃûº¯Êý£¬¶øºóÃæÊÇ´´½¨ÁËÒ»¸öÎÞÃûº¯Êý£¬Ö»ÊÇÈÃÒ»¸ö±äÁ¿Ö¸ÏòÁËÕâ¸öÎÞÃûº¯Êý¡£ÔÚʹÓÃÉϽöÓÐÒ»µãÇø±ð£¬¾ÍÊÇ£º¶ÔÓÚÓÐÃûº¯Êý£¬Ëü¿ÉÒÔ³öÏÖÔÚµ÷ÓÃÖ®ºóÔÙ¶¨Òå;¶ø¶ÔÓÚÎÞÃûº¯Êý£¬Ëü±ØÐëÊÇÔÚµ÷ÓÃ֮ǰ¾ÍÒѾ¶¨Òå¡£ÀýÈ磺
<script language="JavaScript" type="text/javascript"> <!-- func(); var func=function(){ alert(1) } //--> </script> |
¡¡¡¡Õâ¶ÎÓï¾ä½«²úÉúfunc䶨ÒåµÄ´íÎ󣬶ø£º
<script language="JavaScript" type="text/javascript"> <!-- func(); function func(){ alert(1) } //--> </script> |
¡¡¡¡ÔòÄܹ»ÕýÈ·Ö´ÐУ¬ÏÂÃæµÄÓï¾äÒ²ÄÜÕýÈ·Ö´ÐУº
<script language="JavaScript" type="text/javascript"> <!-- func(); var someFunc=function func(){ alert(1) } //--> </script> |
¡¡¡¡Óɴ˿ɼû£¬¾¡¹ÜJavaScriptÊÇһÎâÊÍÐ͵ÄÓïÑÔ£¬µ«Ëü»áÔÚº¯Êýµ÷ÓÃʱ£¬¼ì²éÕû¸ö´úÂëÖÐÊÇ·ñ´æÔÚÏàÓ¦µÄº¯Êý¶¨Ò壬Õâ¸öº¯ÊýÃûÖ»ÓÐÊÇͨ¹ýfunction funcName()ÐÎʽ¶¨ÒåµÄ²Å»áÓÐЧ£¬¶ø²»ÄÜÊÇÄäÃûº¯Êý¡£
¡¡¡¡º¯Êý¶ÔÏóºÍÆäËûÄÚ²¿¶ÔÏóµÄ¹Øϵ
¡¡¡¡³ýÁ˺¯Êý¶ÔÏ󣬻¹ÓкܶàÄÚ²¿¶ÔÏ󣬱ÈÈ磺Object¡¢Array¡¢Date¡¢RegExp¡¢Math¡¢Error¡£ÕâЩÃû³Æʵ¼ÊÉϱíʾһ¸öÀàÐÍ£¬¿ÉÒÔͨ¹ýnew²Ù×÷·û·µ»ØÒ»¸ö¶ÔÏó¡£È»¶øº¯Êý¶ÔÏóºÍÆäËû¶ÔÏó²»Í¬£¬µ±ÓÃtypeofµÃµ½Ò»¸öº¯Êý¶ÔÏóµÄÀàÐÍʱ£¬ËüÈÔÈ»»á·µ»Ø×Ö·û´®¡°function¡±£¬¶øtypeofÒ»¸öÊý×é¶ÔÏó»òÆäËûµÄ¶ÔÏóʱ£¬Ëü»á·µ»Ø×Ö·û´®¡°object¡±¡£ÏÂÃæµÄ´úÂëʾÀýÁËtypeof²»Í¬ÀàÐ͵ÄÇé¿ö£º
alert(typeof(Function))); alert(typeof(new Function())); alert(typeof(Array)); alert(typeof(Object)); alert(typeof(new Array())); alert(typeof(new Date())); alert(typeof(new Object())); |
¡¡¡¡ÔËÐÐÕâ¶Î´úÂë¿ÉÒÔ·¢ÏÖ£ºÇ°Ãæ4ÌõÓï¾ä¶¼»áÏÔʾ¡°function¡±£¬¶øºóÃæ3ÌõÓï¾äÔòÏÔʾ¡°object¡±£¬¿É¼ûnewÒ»¸öfunctionʵ¼ÊÉÏÊÇ·µ»ØÒ»¸öº¯Êý¡£ÕâÓëÆäËûµÄ¶ÔÏóÓкܴóµÄ²»Í¬¡£ÆäËûµÄÀàÐÍArray¡¢ObjectµÈ¶¼»áͨ¹ýnew²Ù×÷·û·µ»ØÒ»¸öÆÕͨ¶ÔÏó¡£¾¡¹Üº¯Êý±¾ÉíÒ²ÊÇÒ»¸ö¶ÔÏ󣬵«ËüÓëÆÕͨµÄ¶ÔÏó»¹ÊÇÓÐÇø±ðµÄ£¬ÒòΪËüͬʱҲÊǶÔÏó¹¹ÔìÆ÷£¬Ò²¾ÍÊÇ˵£¬¿ÉÒÔnewÒ»¸öº¯ÊýÀ´·µ»ØÒ»¸ö¶ÔÏó£¬ÕâÔÚÇ°ÃæÒѾ½éÉÜ¡£ËùÓÐtypeof·µ»Ø¡°function¡±µÄ¶ÔÏó¶¼ÊǺ¯Êý¶ÔÏó¡£Ò²³ÆÕâÑùµÄ¶ÔÏóΪ¹¹ÔìÆ÷£¨constructor£©£¬Òò¶ø£¬ËùÓеĹ¹ÔìÆ÷¶¼ÊǶÔÏ󣬵«²»ÊÇËùÓеĶÔÏó¶¼Êǹ¹ÔìÆ÷¡£
¡¡¡¡¼ÈÈ»º¯Êý±¾ÉíÒ²ÊÇÒ»¸ö¶ÔÏó£¬ËüÃǵÄÀàÐÍÊÇfunction£¬ÁªÏëµ½C++¡¢JavaµÈÃæÏò¶ÔÏóÓïÑÔµÄÀඨÒ壬¿ÉÒԲ²⵽FunctionÀàÐ͵Ä×÷ÓÃËùÔÚ£¬ÄǾÍÊÇ¿ÉÒÔ¸øº¯Êý¶ÔÏó±¾Éí¶¨ÒåһЩ·½·¨ºÍÊôÐÔ£¬½èÖúÓÚº¯ÊýµÄprototype¶ÔÏ󣬿ÉÒԺܷ½±ãµØÐ޸ĺÍÀ©³äFunctionÀàÐ͵Ķ¨Ò壬ÀýÈçÏÂÃæÀ©Õ¹Á˺¯ÊýÀàÐÍFunction£¬ÎªÆäÔö¼ÓÁËmethod1·½·¨£¬×÷ÓÃÊǵ¯³ö¶Ô»°¿òÏÔʾ"function"£º
Function.prototype.method1=function(){ alert("function"); } function func1(a,b,c){ return a+b+c; } func1.method1(); func1.method1.method1(); |
¡¡¡¡×¢Òâ×îºóÒ»¸öÓï¾ä£ºfunc1.method1.mehotd1()£¬Ëüµ÷ÓÃÁËmethod1Õâ¸öº¯Êý¶ÔÏóµÄmethod1·½·¨¡£ËäÈ»¿´ÉÏÈ¥ÓеãÈÝÒ×»ìÏý£¬µ«×Ðϸ¹Û²ìÒ»ÏÂÓï·¨»¹ÊǺÜÃ÷È·µÄ£ºÕâÊÇÒ»¸öµÝ¹éµÄ¶¨Òå¡£ÒòΪmethod1±¾ÉíÒ²ÊÇÒ»¸öº¯Êý£¬ËùÒÔËüͬÑù¾ßÓк¯Êý¶ÔÏóµÄÊôÐԺͷ½·¨£¬ËùÓжÔFunctionÀàÐ͵ķ½·¨À©³ä¶¼¾ßÓÐÕâÑùµÄµÝ¹éÐÔÖÊ¡£
¡¡¡¡FunctionÊÇËùÓк¯Êý¶ÔÏóµÄ»ù´¡£¬¶øObjectÔòÊÇËùÓжÔÏ󣨰üÀ¨º¯Êý¶ÔÏ󣩵Ļù´¡¡£ÔÚJavaScriptÖУ¬ÈκÎÒ»¸ö¶ÔÏó¶¼ÊÇObjectµÄʵÀý£¬Òò´Ë£¬¿ÉÒÔÐÞ¸ÄObjectÕâ¸öÀàÐÍÀ´ÈÃËùÓеĶÔÏó¾ßÓÐһЩͨÓõÄÊôÐԺͷ½·¨£¬ÐÞ¸ÄObjectÀàÐÍÊÇͨ¹ýprototypeÀ´Íê³ÉµÄ£º
Object.prototype.getType=function(){ return typeof(this); } var array1=new Array(); function func1(a,b){ return a+b; } alert(array1.getType()); alert(func1.getType()); |
¡¡¡¡ÉÏÃæµÄ´úÂëΪËùÓеĶÔÏóÌí¼ÓÁËgetType·½·¨£¬×÷ÓÃÊÇ·µ»Ø¸Ã¶ÔÏóµÄÀàÐÍ¡£Á½ÌõalertÓï¾ä·Ö±ð»áÏÔʾ¡°object¡±ºÍ¡°function¡±¡£
¡¡¡¡½«º¯Êý×÷Ϊ²ÎÊý´«µÝ
¡¡¡¡ÔÚÇ°ÃæÒѾ½éÉÜÁ˺¯Êý¶ÔÏó±¾ÖÊ£¬Ã¿¸öº¯Êý¶¼±»±íʾΪһ¸öÌØÊâµÄ¶ÔÏ󣬿ÉÒÔ·½±ãµÄ½«Æ丳ֵ¸øÒ»¸ö±äÁ¿£¬ÔÙͨ¹ýÕâ¸ö±äÁ¿Ãû½øÐк¯Êýµ÷Óá£×÷Ϊһ¸ö±äÁ¿£¬Ëü¿ÉÒÔÒÔ²ÎÊýµÄÐÎʽ´«µÝ¸øÁíÒ»¸öº¯Êý£¬ÕâÔÚÇ°Ãæ½éÉÜJavaScriptʼþ´¦Àí»úÖÆÖÐÒѾ¿´µ½¹ýÕâÑùµÄÓ÷¨£¬ÀýÈçÏÂÃæµÄ
³ÌÐò½«func1×÷Ϊ²ÎÊý´«µÝ¸øfunc2£º
function func1(theFunc){ theFunc(); } function func2(){ alert("ok"); } func1(func2); |
¡¡¡¡ÔÚ×îºóÒ»ÌõÓï¾äÖУ¬func2×÷Ϊһ¸ö¶ÔÏ󴫵ݸøÁËfunc1µÄÐβÎtheFunc£¬ÔÙÓÉfunc1ÄÚ²¿½øÐÐtheFuncµÄµ÷Óá£ÊÂʵÉÏ£¬½«º¯Êý×÷Ϊ²ÎÊý´«µÝ£¬»òÕßÊǽ«º¯Êý¸³Öµ¸øÆäËû±äÁ¿ÊÇËùÓÐʼþ»úÖƵĻù´¡¡£
¡¡¡¡ÀýÈ磬Èç¹ûÐèÒªÔÚÒ³ÃæÔØÈëʱ½øÐÐһЩ³õʼ»¯¹¤×÷£¬¿ÉÒÔÏȶ¨ÒåÒ»¸öinitµÄ³õʼ»¯º¯Êý£¬ÔÙͨ¹ýwindow.onload=init;Óï¾ä½«Æä°ó¶¨µ½Ò³ÃæÔØÈëÍê³ÉµÄʼþ¡£ÕâÀïµÄinit¾ÍÊÇÒ»¸öº¯Êý¶ÔÏó£¬Ëü¿ÉÒÔ¼ÓÈëwindowµÄonloadʼþÁÐ±í¡£
¡¡¡¡´«µÝ¸øº¯ÊýµÄÒþº¬²ÎÊý£ºarguments
¡¡¡¡µ±½øÐк¯Êýµ÷ÓÃʱ£¬³ýÁËÖ¸¶¨µÄ²ÎÊýÍ⣬»¹´´½¨Ò»¸öÒþº¬µÄ¶ÔÏ󡪡ªarguments¡£argumentsÊÇÒ»¸öÀàËÆÊý×鵫²»ÊÇÊý×éµÄ¶ÔÏó£¬ËµËüÀàËÆÊÇÒòΪËü¾ßÓÐÊý×éÒ»ÑùµÄ·ÃÎÊÐÔÖÊ£¬¿ÉÒÔÓÃarguments[index]ÕâÑùµÄÓ﷨ȡֵ£¬ÓµÓÐÊý×鳤¶ÈÊôÐÔlength¡£arguments¶ÔÏó´æ´¢µÄÊÇʵ¼Ê´«µÝ¸øº¯ÊýµÄ²ÎÊý£¬¶ø²»¾ÖÏÞÓÚº¯ÊýÉùÃ÷Ëù¶¨ÒåµÄ²ÎÊýÁÐ±í£¬ÀýÈ磺
function func(a,b){ alert(a); alert(b); for(var i=0;i<arguments.length;i++){ alert(arguments[i]); } } func(1,2,3); |
¡¡¡¡´úÂëÔËÐÐʱ»áÒÀ´ÎÏÔʾ£º1£¬2£¬1£¬2£¬3¡£Òò´Ë£¬ÔÚ¶¨Ò庯ÊýµÄʱºò£¬¼´Ê¹²»Ö¸¶¨²ÎÊýÁÐ±í£¬ÈÔÈ»¿ÉÒÔͨ¹ýargumentsÒýÓõ½Ëù»ñµÃµÄ²ÎÊý£¬Õâ¸ø
±à³Ì´øÀ´Á˺ܴóµÄÁé»îÐÔ¡£arguments¶ÔÏóµÄÁíÒ»¸öÊôÐÔÊÇcallee£¬Ëü±íʾ¶Ôº¯Êý¶ÔÏó±¾ÉíµÄÒýÓã¬ÕâÓÐÀûÓÚʵÏÖÎÞÃûº¯ÊýµÄµÝ¹é»òÕß±£Ö¤º¯ÊýµÄ·â×°ÐÔ£¬ÀýÈçʹÓõݹéÀ´¼ÆËã1µ½nµÄ×ÔÈ»ÊýÖ®ºÍ£º
var sum=function(n){ if(1==n)return 1; else return n+sum(n-1); } alert(sum(100)); |
¡¡¡¡ÆäÖк¯ÊýÄÚ²¿°üº¬Á˶Ôsum×ÔÉíµÄµ÷Óã¬È»¶ø¶ÔÓÚJavaScriptÀ´Ëµ£¬º¯ÊýÃû½ö½öÊÇÒ»¸ö±äÁ¿Ãû£¬ÔÚº¯ÊýÄÚ²¿µ÷ÓÃsum¼´Ï൱ÓÚµ÷ÓÃÒ»¸öÈ«¾Ö±äÁ¿£¬²»ÄܺܺõÄÌåÏÖ³öÊǵ÷ÓÃ×ÔÉí£¬ËùÒÔʹÓÃarguments.calleeÊôÐÔ»áÊÇÒ»¸ö½ÏºÃµÄ°ì·¨£º
var sum=function(n){ if(1==n)return 1; else return n+arguments.callee(n-1); } alert(sum(100)); |
¡¡¡¡calleeÊôÐÔ²¢²»ÊÇarguments²»Í¬ÓÚÊý×é¶ÔÏóµÄΩһÌØÕ÷£¬ÏÂÃæµÄ´úÂë˵Ã÷ÁËarguments²»ÊÇÓÉArrayÀàÐÍ´´½¨£º
Array.prototype.p1=1; alert(new Array().p1); function func(){ alert(arguments.p1); } func(); |
¡¡¡¡ÔËÐдúÂë¿ÉÒÔ·¢ÏÖ£¬µÚÒ»¸öalertÓï¾äÏÔʾΪ1£¬¼´±íʾÊý×é¶ÔÏóÓµÓÐÊôÐÔp1£¬¶øfuncµ÷ÓÃÔòÏÔʾΪ¡°undefined¡±£¬¼´p1²»ÊÇargumentsµÄÊôÐÔ£¬Óɴ˿ɼû£¬arguments²¢²»ÊÇÒ»¸öÊý×é¶ÔÏó¡£
¡¡¡¡º¯ÊýµÄapply¡¢call·½·¨ºÍlengthÊôÐÔ
¡¡¡¡JavaScriptΪº¯Êý¶ÔÏó¶¨ÒåÁËÁ½¸ö·½·¨£ºapplyºÍcall£¬ËüÃǵÄ×÷Óö¼Êǽ«º¯Êý°ó¶¨µ½ÁíÍâÒ»¸ö¶ÔÏóÉÏÈ¥ÔËÐУ¬Á½Õß½öÔÚ¶¨Òå²ÎÊýµÄ·½Ê½ÓÐËùÇø±ð£º
Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2¡]]); |
¡¡¡¡´Óº¯ÊýÔÐÍ¿ÉÒÔ¿´µ½£¬µÚÒ»¸ö²ÎÊý¶¼±»È¡ÃûΪthisArg£¬¼´ËùÓк¯ÊýÄÚ²¿µÄthisÖ¸Õ붼»á±»¸³ÖµÎªthisArg£¬Õâ¾ÍʵÏÖÁ˽«º¯Êý×÷ΪÁíÍâÒ»¸ö¶ÔÏóµÄ·½·¨ÔËÐеÄÄ¿µÄ¡£Á½¸ö·½·¨³ýÁËthisArg²ÎÊý£¬¶¼ÊÇΪFunction¶ÔÏ󴫵ݵIJÎÊý¡£ÏÂÃæµÄ´úÂë˵Ã÷ÁËapplyºÍcall·½·¨µÄ¹¤×÷·½Ê½£º
//¶¨ÒåÒ»¸öº¯Êýfunc1£¬¾ßÓÐÊôÐÔpºÍ·½·¨A function func1(){ this.p="func1-"; this.A=function(arg){ alert(this.p+arg); } } //¶¨ÒåÒ»¸öº¯Êýfunc2£¬¾ßÓÐÊôÐÔpºÍ·½·¨B function func2(){ this.p="func2-"; this.B=function(arg){ alert(this.p+arg); } } var obj1=new func1(); var obj2=new func2(); obj1.A("byA"); //ÏÔʾfunc1-byA obj2.B("byB"); //ÏÔʾfunc2-byB obj1.A.apply(obj2,["byA"]); //ÏÔʾfunc2-byA£¬ÆäÖÐ[¡°byA¡±]ÊǽöÓÐÒ»¸öÔªËصÄÊý×飬ÏÂͬ obj2.B.apply(obj1,["byB"]); //ÏÔʾfunc1-byB obj1.A.call(obj2,"byA"); //ÏÔʾfunc2-byA obj2.B.call(obj1,"byB"); //ÏÔʾfunc1-byB |
¡¡¡¡¿ÉÒÔ¿´³ö£¬obj1µÄ·½·¨A±»°ó¶¨µ½obj2ÔËÐкó£¬Õû¸öº¯ÊýAµÄÔËÐл·¾³¾ÍתÒƵ½ÁËobj2£¬¼´thisÖ¸ÕëÖ¸ÏòÁËobj2¡£Í¬Ñùobj2µÄº¯ÊýBÒ²¿ÉÒ԰󶨵½obj1¶ÔÏóÈ¥ÔËÐС£´úÂëµÄ×îºó4ÐÐÏÔʾÁËapplyºÍcallº¯Êý²ÎÊýÐÎʽµÄÇø±ð¡£
¡¡¡¡ÓëargumentsµÄlengthÊôÐÔ²»Í¬£¬º¯Êý¶ÔÏó»¹ÓÐÒ»¸öÊôÐÔlength£¬Ëü±íʾº¯Êý¶¨ÒåʱËùÖ¸¶¨²ÎÊýµÄ¸öÊý£¬¶ø·Çµ÷ÓÃʱʵ¼Ê´«µÝµÄ²ÎÊý¸öÊý¡£ÀýÈçÏÂÃæµÄ´úÂ뽫ÏÔʾ2£º
function sum(a,b){ return a+b; } alert(sum.length); |
¡¡¡¡ÉîÈëÈÏʶJavaScriptÖеÄthisÖ¸Õë
¡¡¡¡thisÖ¸ÕëÊÇÃæÏò¶ÔÏó
³ÌÐòÉè¼ÆÖеÄÒ»ÏîÖØÒª¸ÅÄËü±íʾµ±Ç°ÔËÐеĶÔÏó¡£ÔÚʵÏÖ¶ÔÏóµÄ·½·¨Ê±£¬¿ÉÒÔʹÓÃthisÖ¸ÕëÀ´»ñµÃ¸Ã¶ÔÏó×ÔÉíµÄÒýÓá£
¡¡¡¡ºÍÆäËûÃæÏò¶ÔÏóµÄÓïÑÔ²»Í¬£¬JavaScriptÖеÄthisÖ¸ÕëÊÇÒ»¸ö¶¯Ì¬µÄ±äÁ¿£¬Ò»¸ö·½·¨ÄÚµÄthisÖ¸Õë²¢²»ÊÇʼÖÕÖ¸Ïò¶¨Òå¸Ã·½·¨µÄ¶ÔÏóµÄ£¬ÔÚÉÏÒ»½Ú½²º¯ÊýµÄapplyºÍcall·½·¨Ê±ÒѾÓйýÕâÑùµÄÀý×Ó¡£ÎªÁË·½±ãÀí½â£¬ÔÙÀ´¿´ÏÂÃæµÄÀý×Ó£º
<script language="JavaScript" type="text/javascript"> <!-- //´´½¨Á½¸ö¿Õ¶ÔÏó var obj1=new Object(); var obj2=new Object(); //¸øÁ½¸ö¶ÔÏó¶¼Ìí¼ÓÊôÐÔp£¬²¢·Ö±ðµÈÓÚ1ºÍ2 obj1.p=1; obj2.p=2; //¸øobj1Ìí¼Ó·½·¨£¬ÓÃÓÚÏÔʾpµÄÖµ obj1.getP=function(){ alert(this.p); //±íÃæÉÏthisÖ¸ÕëÖ¸ÏòµÄÊÇobj1 } //µ÷ÓÃobj1µÄgetP·½·¨ obj1.getP(); //ʹobj2µÄgetP·½·¨µÈÓÚobj1µÄgetP·½·¨ obj2.getP=obj1.getP; //µ÷ÓÃobj2µÄgetP·½·¨ obj2.getP(); //--> </script> |
¡¡¡¡´Ó´úÂëµÄÖ´Ðнá¹û¿´£¬·Ö±ðµ¯³ö¶Ô»°¿òÏÔʾ1ºÍ2¡£Óɴ˿ɼû£¬getPº¯Êý½ö¶¨ÒåÁËÒ»´Î£¬ÔÚ²»Í¬µÄ³¡ºÏÔËÐУ¬ÏÔʾÁ˲»Í¬µÄÔËÐнá¹û£¬ÕâÊÇÓÐthisÖ¸ÕëµÄ±ä»¯Ëù¾ö¶¨µÄ¡£ÔÚobj1µÄgetP·½·¨ÖУ¬this¾ÍÖ¸ÏòÁËobj1¶ÔÏ󣬶øÔÚobj2µÄgetP·½·¨ÖУ¬this¾ÍÖ¸ÏòÁËobj2¶ÔÏ󣬲¢Í¨¹ýthisÖ¸ÕëÒýÓõ½ÁËÁ½¸ö¶ÔÏ󶼾ßÓеÄÊôÐÔp¡£
¡¡¡¡Óɴ˿ɼû£¬JavaScriptÖеÄthisÖ¸ÕëÊÇÒ»¸ö¶¯Ì¬±ä»¯µÄ±äÁ¿£¬Ëü±íÃ÷Á˵±Ç°ÔËÐиú¯ÊýµÄ¶ÔÏó¡£ÓÉthisÖ¸ÕëµÄÐÔÖÊ£¬Ò²¿ÉÒÔ¸üºÃµÄÀí½âJavaScriptÖжÔÏóµÄ±¾ÖÊ£ºÒ»¸ö¶ÔÏó¾ÍÊÇÓÉÒ»¸ö»ò¶à¸öÊôÐÔ£¨·½·¨£©×é³ÉµÄ¼¯ºÏ¡£Ã¿¸ö¼¯ºÏÔªËز»ÊǽöÄÜÊôÓÚÒ»¸ö¼¯ºÏ£¬¶øÊÇ¿ÉÒÔ¶¯Ì¬µÄÊôÓÚ¶à¸ö¼¯ºÏ¡£ÕâÑù£¬Ò»¸ö·½·¨£¨¼¯ºÏÔªËØ£©ÓÉ˵÷Óã¬thisÖ¸Õë¾ÍÖ¸ÏòË¡£Êµ¼ÊÉÏ£¬Ç°Ãæ½éÉܵÄapply·½·¨ºÍcall·½·¨¶¼ÊÇͨ¹ýÇ¿ÖƸıäthisÖ¸ÕëµÄÖµÀ´ÊµÏֵģ¬Ê¹thisÖ¸ÕëÖ¸Ïò²ÎÊýËùÖ¸¶¨µÄ¶ÔÏ󣬴Ӷø´ïµ½½«Ò»¸ö¶ÔÏóµÄ·½·¨×÷ΪÁíÒ»¸ö¶ÔÏóµÄ·½·¨ÔËÐС£
¡¡¡¡Ã¿¸ö¶ÔÏ󼯺ϵÄÔªËØ£¨¼´ÊôÐÔ»ò·½·¨£©Ò²ÊÇÒ»¸ö¶ÀÁ¢µÄ²¿·Ö£¬È«¾Öº¯ÊýºÍ×÷Ϊһ¸ö¶ÔÏó·½·¨¶¨ÒåµÄº¯ÊýÖ®¼äûÓÐÈκÎÇø±ð£¬ÒòΪ¿ÉÒÔ°ÑÈ«¾Öº¯ÊýºÍ±äÁ¿¿´×÷Ϊwindow¶ÔÏóµÄ·½·¨ºÍÊôÐÔ¡£Ò²¿ÉÒÔʹÓÃnew²Ù×÷·ûÀ´²Ù×÷Ò»¸ö¶ÔÏóµÄ·½·¨À´·µ»ØÒ»¸ö¶ÔÏó£¬ÕâÑùÒ»¸ö¶ÔÏóµÄ·½·¨Ò²¾Í¿ÉÒÔ¶¨ÒåΪÀàµÄÐÎʽ£¬ÆäÖеÄthisÖ¸ÕëÔò»áÖ¸Ïòд´½¨µÄ¶ÔÏó¡£ÔÚºóÃæ¿ÉÒÔ¿´µ½£¬Õâʱ¶ÔÏóÃû¿ÉÒÔÆðµ½Ò»¸öÃüÃû
¿Õ¼äµÄ×÷Óã¬ÕâÊÇʹÓÃJavaScript½øÐÐÃæÏò¶ÔÏó
³ÌÐòÉè¼ÆµÄÒ»¸ö¼¼ÇÉ¡£ÀýÈ磺
var namespace1=new Object(); namespace1.class1=function(){ //³õʼ»¯¶ÔÏóµÄ´úÂë } var obj1=new namespace1.class1(); |
¡¡¡¡ÕâÀï¾Í¿ÉÒÔ°Ñnamespace1¿´³ÉÒ»¸öÃüÃû
¿Õ¼ä¡£
¡¡¡¡ÓÉÓÚ¶ÔÏóÊôÐÔ£¨·½·¨£©µÄ¶¯Ì¬±ä»¯ÌØÐÔ£¬Ò»¸ö¶ÔÏóµÄÁ½¸öÊôÐÔ£¨·½·¨£©Ö®¼äµÄ»¥ÏàÒýÓ㬱ØÐëҪͨ¹ýthisÖ¸Õ룬¶øÆäËûÓïÑÔÖУ¬this¹Ø¼ü×ÖÊÇ¿ÉÒÔÊ¡ÂԵġ£ÈçÉÏÃæµÄÀý×ÓÖУº
obj1.getP=function(){ alert(this.p); //±íÃæÉÏthisÖ¸ÕëÖ¸ÏòµÄÊÇobj1 } |
¡¡¡¡ÕâÀïµÄthis¹Ø¼ü×ÖÊDz»¿ÉÊ¡ÂԵģ¬¼´²»ÄÜд³Éalert(p)µÄÐÎʽ¡£Õ⽫ʹµÃgetPº¯ÊýÈ¥ÒýÓÃÉÏÏÂÎÄ»·¾³ÖеÄp±äÁ¿£¬¶ø²»ÊÇobj1µÄÊôÐÔ¡£