j**ascriptÖÐcall,apply,bindµÄÓ÷¨¶Ô±È·ÖÎö

ʱ¼ä£º2016.05.07 ·¢²¼ÈË£ºZh**UJINh**U8888

j**ascriptÖÐcall,apply,bindµÄÓ÷¨¶Ô±È·ÖÎö

Òѽâ¾öÎÊÌâ

¹È¸èZh**UJINh**U8888Óû§ÔÚ2016.05.07Ìá½»Á˹ØÓÚ¡°ÁèÌìÕ½×ðj**ascriptÖÐcall,apply,bindµÄÓ÷¨¶Ô±È·ÖÎö¡±µÄÌáÎÊ£¬»¶Ó­´ó¼ÒÓ¿Ô¾·¢±í×Ô¼ºµÄ¹Ûµã¡£Ä¿Ç°¹²ÓÐ1¸ö»Ø´ð£¬×îºó¸üÐÂÓÚ2025-02-27T02:43:19¡£Ï£Íû´ó¼ÒÄܹ»°ïÖúËý¡£

ÏêϸÎÊÌâÃèÊö¼°ÒÉÎÊ£ºÆÚ´ýÄúµÄ´ð°¸£¬¸ÐлÄã,ÎÒ»á¼ÇµÃÄã¶ÔÎÒµÄºÃµÄ £¡

Ï£ÍûÒÔϵĻشð£¬Äܹ»°ïÖúÄã¡£

µÚ1¸ö»Ø´ð

Óû§Ãû£ºdingjilei5210  

ÕâÆªÎÄÕÂÖ÷Òª¸ø´ó¼Ò¶Ô±È·ÖÎöÁËj**ascriptÖÐcall,apply,bindÈý¸öº¯ÊýµÄÓ÷¨£¬·Ç³£µÄÏêϸ£¬ÕâÀïÍÆ¼ö¸øÐ¡»ï°éÃÇ¡£

¹ØÓÚcall,apply,bindÕâÈý¸öº¯ÊýµÄÓÃ×ÅÆûÕû±£Ëߺ¦ÄÍ·¨£¬ÊÇѧϰj**ascriptÕâÃÅÓïÑÔÎÞ·¨Ô½¹ýµÄ֪ʶµã¡£Ï±ßÎÒ¾ÍÀ´ºÃºÃ×ܽáÒ»ÏÂËüÃÇÈýÕ߸÷×ÔµÄÓ÷¨£¬¼°³£¼ûµÄÓ¦Óó¡¾°¡£

Ê×ÏÈ¿´callÕâ¸öº¯Êý£¬¿ÉÒÔÀí½â³É"½èÓÓ,"ÇëÇó"¡£ÏëÏñÒ»ÏÂÈçÁÏÊô¹ÊÍŶ̳ԴëÒý¸öϵÄÇé¾°£ºÄã¹Âµ¥Ò»ÈËÆ¯²´ÔÚÍ⣬Óм±ÊÂÏëÍù¼ÒÀï´òµç»°£¬¿ÉÊǺܲ»ÇÉ£¬ÊÖ»úÇ··ÑÁË£¬»òÕßûµçÁË£¬»òÕßµô¿ÓÀïÁË£¬×ÜÖ®ÄãµÄÊÖÐ˶À»ú¾ÍÊÇÓò»³É¡£¿ÉÊÇÄã·Ç´òÕâ¸öµç»°²»¿É£¬ÓÚÊÇÄã¿ÉÒÔÈ¥½èÒ»ÏÂÅóÓѵÄÊÖ»ú£¬»òÕß½èÓÃÒ»ÏÂÁÚ¾ÓµÄÊÖ»ú£¬»òÕß¹«Óõ绰£¬ÕâÑùÄØ£¬Äã¾Í¿ÉÒÔÔÚ×Ô¼ºÃ»ÓÐÊÖ»ú¿ÉÓõÄÇé¿öÏ£¬Íê³É´òµç»°Õâ¸öÊÂÇ飬¶øÖÁÓÚÇÖºÅɳ´óͬÀÍÄãÊÇÓÃË­µÄµç»°´òµÄ£¬¾Í²»ÖØÒªÁË£¬·´ÕýºÍÓÃÄã×Ô¼ºµÄÊÖ»ú´òµÄµç»°ÊÇÒ»ÑùµÄЧ¹û¡£callÕâ¸öº¯ÊýµÄ³õÖÔÒ²ºÍÕâ¸öÀàËÆ£¬ÏÂÃæÎÒÓôúÂëÀ´Ä£ÄâÒ»ÏÂËüµÄÓ¦ÓÃÇé¾°£º

´úÂëÈçÏÂ:
varʱ»»¹¥frog={
name:'frog',
say:function(){
alert(***.name);
}
}
varrabÒòÂí²îÈý¹ÅÀí½Çbit={
name:'rabbit'
}
frog.***.call(rubbit)//rabbit

rubbitÕâ¸ö¶ÔÏóÊǸöÑÆ°É£¬µ«ÊÇËûÏëÒªË**ö×Ô¼ºµÄÃû×Ö£¬¹âƾËü×Ô¼ºµÄÄÜÁ¦£¬ÊDz»¿ÉÄÜʵÏֵģ¬ºÃÔÚÄØ£¬ËüÓÐÒ»¸ö½ÐfrogµÄºÃ»ùÓÑ£¬Ëü¿ÉÒÔ˵»°¡£ÓÚÊÇÄØ£¬rubbit¾ÍÇëÇófrogÌæËüʵÏÖÕâ¸öÐÄÔ¸¡£frog.***.call()µÄµÚÒ»¸ö²ÎÊý£¬Ò»¶¨ÊÇÒªÌîд·¢³öÇëÇóµÄÈË£¬ÂÉʦϲ»¶³ÆÎªÎ¯ÍÐÈË¡£ÕâÀïÊÇru˹ËïbbitÇëÇófrogÌæËüsayÃû×Ö£¬ËùÒÔÌîдrubbit¡£ÕâÑùÒ»À´£¬ÔÚsayµÄʱºò£¬¾Í»á²éÕÒrubbitµÄname,¶ø²»ÊÇfrogµÄnameÁË¡£Èç¹ûÕâÀïÌîдfrog»áÊÇʲôÑù×ÓÄØ£¿Õâ¾ÍºÃ±ÈÊÇ×Ô¼ºÇëÇó×Ô¼º×öijÊ£¬Î¹×Ô¼º´úÑÎÒ²ÊÇ¿ÉÒÔÊäµÄ¡£¿ÉÒÔÊÔһϣº

´úÂëÈçÏÂ:
varfrog={
name:'frog',
say:function(){
alert(***.name);
}
}
varrabbit={
name:'µ÷¾ÓµÄÎïӪס³õrabbit'
}
frog.***.call(frog)//frog

×Ô¼ºÎ¹×Ô¼º³Ô½ÓÑï·´ÂÞÊÒÁí¶Ü¸½´üÑΣ¬¿Ï¶¨ÊÇ˵×Ô¼ºµÄÃû×ÖÀ²£¬ÕâÍêȫûÓÐʲôÒâÍâµÄ¡£ÏÂÃæÎÒÃÇÀ´Ö²¿´¿´callµÄ¾­µäÓ÷¨£º

´úÂëÈçÏÂ:
//°Ñ²ÎÊýת»¯³ÉÕæÕýµÄÊý×é¶ÔÏó
functionfrog(){
vararr=[].***.call(arguments);
console.log(arguments.slicÉϽ²ÑÝÊØÔ­e,arr.slice)
//undefinºË¹úÈëedfunctionslice(){[nativecode]}
}
frog(1,2,3,4)

ÄܹýÕâÈÎËÙôһcall,ÎÒÃǾͿÉÒÔ°Ù»¯½ðɳÊаÑarguments¶ÔÏóµ±³ÉÊý×é¶ÔÏóÀ´Ê¹ÓÃÁË¡£¹ØÓÚcallµÄÓ÷¨ºÜ¶à,·­¿ªjqueryµÄÔ´Â룬ºÜÈÝÒ×¾ÍÄÜÕÒµ½ºÜ¶àÔËÓõĵط½¡£Ôڴ˲»Ò»Ò»ÁоÙÁË£¬»¹Êǻص½ÎÒÃÇÇ°ÃæµÄÇé¾°Áî¶ÈÏßϵռÒÔÈ¡Éí¿é£¬½èµç»°ÕâÖÖÊÂÌ«¼òµ¥ÁË£¬´òÍêµç»°£¬¿Ï¶¨»¹ÏëÉÓµãʲô¶«Î÷»ØÈ¥£¬±Ï¾¹Õâô¶àÄêÆ¯ÖÜÂýÂý·ÓÑÏóÇø²´ÔÚÍ⣬ûÓкúÃТ¾´ÏÂÀÏÈË£¬Âòµãµ±µØµÄÌØ**»ØÈ¥£¬¿Ï¶¨ÊǼ«ºÃµÄ¡£¿ÉÊÇÍâ±ßµÄÉú»îѹÁ¦ÊÇÈç´ËÖ®´ó£¬Ã¿Ìì³ýÁËÉϰ໹Ҫ¼Ó°à£¬Èç¹ûÇë¼ÙµÄ»°£¬²»µ«¹¤×ÊÒª¿Û£¬»¹Òª»¨·Ñ²»Éٵķ·Ñ£¬ÕâЩǮ¼ÓÆðÀ´£¬¹À¼Æ¶¼¹»ÀÏÈËÔÚ¼ÒÀïÒ»ÄêµÄÓöÈÁË¡£ÏëÏë²»»®Ë㣬ÓÚÊÇÓÖÏëµ½callÕâ¸öº¯Êý£¬ÇëËü°ï棬˳µÀ´ø»ØÈ¥ÊǷdz£Ã÷ÖǵÄÑ¡Ôñ£¬¶øÇÒËü²»ÊÕ·Ñ£¬²»ÏÞÁ¿£¬²»ÏÞÖØ£¬ÓжàÉÙ£¬´ø¶àÉÙ¡£ÎÒÔÙ´ÎÓôúÂëÀ´ÑÝʾһÏ£º

´úÂëÈçÏÂ:
varfrog={
name:'frog',
send:function(money,food,milk,suagate){
alert(money+food+milk+suagate);
}
}
varrabbit={
name:'rabbit'
}
frog.***.call(rubbit,'money','food','milk','suagate')

Èç¹ûÄãÓÐÇ®ÈÎÐÔ£¬ÉõÖÁ¿ÉÒÔ°Ñiphone6plusʲôµÄÒ²¼Ä¼¸¸ö»ØÈ¥¡£.^_^.

˵µ½ÕâÀïcall¾Í²î²»¶à½áÊøÁË£¬ÎÒÒ²²»ÖªµÀÉÏÃæµÄÇé¾°¾ç£¬ÊDz»ÊÇÈÃÄãÃ÷°×ÁËcallÊÇÔõô»ØÊ£¬Èç¹ûֻʴÆðÁËÄãµÄ˼ÏçÖ®Ç飬ÄÇÎÒ±íʾ±§Ç¸¡£

call»¹ÓÐÒ»¸öͬ¸¸ÒìĸµÄÐֵܣ¬½Ðapply,Èç¹ûŪÃ÷°×ÁËcallµÄÓ÷¨£¬ÄÇôapplyÆäʵҲÊÇÒ»»ØÊ£¬Î¨Ò»µÄÇø±ðÄØ£¬¾ÍÊÇapply²»Ï²»¶´«¶«Î÷µÄʱºò£¬Ò»¸ö¶«Î÷´òÒ»¸ö°ü£¬ÏԵúÜÂé·³²»Ëµ£¬»**»»·±£¡£ÓÚÊÇËû¾ÍÌṩһ¸ö×°¶«Î÷µÄ´óÏä×Ó£¬Äã°ÑÄãÒª´«µÄ¶«Î÷È«·ÅÔÚËüÌṩµÄÏä×ÓÀï¾ÍºÃÁË¡£Õâ¸ö´óÏä×Ó£¬¾ÍÊÇÒ»¸öÊý×é¡£ÉÏÃæµÄÀý×Ó£¬ÓÃapplyÀ´×öµÄ»°£¬¾ÍÊÇÕâÑù×ӵģº

´úÂëÈçÏÂ:
varfrog={
name:'frog',
send:function(money,food,milk,suagate){
alert(money+food+milk+suagate);
}
}
varrabbit={
name:'rabbit'
}
//×¢Òâ²ÎÊýµÄÇø±ð
frog.send.apply(rubbit,['money','food','milk','suagate'])

ÒÔÉϾÍÊÇapply,callµÄǰÊÀ½ñÉúÁË¡£¿ÉÊÇÍòÍòûÏëµ½£¬applyºÍcallµÄ°Ö°Ö£¬Ç°Ð©Äê¸ã·¿µØ**·¢Á˲ƣ¬ÔÚÍâ±ß»¹ÓÐÒ»¸ö½ÐbindµÄ˽Éú×Ó¡£ËäÈ»±ÈcallºÍapplyÕâÁ½¸ö¸ç¸çÍí³öµÀ¼¸Ä꣬µ«ÊÇÄÜÁ¦Ò²²»ÈÝСÊÓ¡£Ö»²»¹ý£¬ËûµÄÉí·Ý£¬ÔÚijЩµØ·½£¬ÊDz»³ÐÈϵġ£±ÈÈçIE6¡£ÏÂÃæÎÒ»¹ÊÇÓôúÂëÀ´ÑÝʾÏÂËûµÄ±¾Á죺

´úÂëÈçÏÂ:
varname='rubbit';
varfrog={
name:'frog',
say:function(){
setTimeout(function(money,milk){
alert(***.name+money+milk)
}.bind(this,'money','milk'),1000)
}
}
frog.say();

ͨ¹ý¶Ô±È·¢ÏÖ,bind¿ÉÒÔÖ±½ÓÁ¬ÔÚfunction(){}ºóÃæÓá£Ï൱ÓÚ°ÑcallºÍapply¶¼Ê¡ÁË£¬Ö±½ÓÔÚº¯ÊýºóÃæÖ¸¶¨Î¯ÍÐÈ˺ÍÒª´«µÝµÄ²ÎÊý¡£´Ó´«²ÎµÄ·ç¸ñÉÏÀ´Ëµ£¬¸üÏñcallһЩ¡£

¹ØÓÚbind£¬ÎÒÃÇÔÙÀ´¿´Ò»¶Î¾­µäµÄÓ÷¨£º

´úÂëÈçÏÂ:
varobj={
name:'frog'
}
document.addEventListener('click',function(){
alert(***.name);//frog
}.bind(obj),false);

×ܽáһϣ¬apply,call,bind,ÕâÈýÐֵܵÄÏàͬµãÊÇ£º

1.µÚÒ»¸ö²ÎÊý¶¼Êǰ×÷ÓÃÓò£¬¼´ÊÇÔÚË­µÄµØÅÌÉÏ×öÊ¡£

2.¶¼¿ÉÒÔ´«µÝ²ÎÊý

²»Í¬µãÊÇ£º

apply,call¼æÈÝÐÔ¸üºÃ£¬bindijЩµÍ°æ±¾µÄä¯ÀÀÆ÷²»Ö§³Ö¡£

apply´«µÝµÄ²ÎÊý±ØÐëÊÇÓÃÊý×é½øÐаü×°µÄ£¬¶øcallºÍbindÔòÊǽ«Òª´«µÝµÄ²ÎÊýÒ»Ò»Áгö¡£

´ó¼ÒÊÇ·ñ¶Ôcall,apply,bindÈý¸öº¯ÊýµÄÓ÷¨ÓÐÁ˸üÉîÈëµÄÈÏʶÁËÄØ£¬Ï£Íû±¾ÎÄÄܶԴó¼ÒÓÐËù°ïÖú¡£