javascriptÖеÄthisºÍº¯ÊýϢϢÏà¹Ø£¬ËùÒÔ½ñÌ죬ÎҾ͸ø´ó¼ÒÏêϸµØ½²ÊöÒ»·¬£ºjavascriptº¯ÊýÖеÄthis
һ̸µ½this£¬ºÜ¶àÈÃÈËÔÎÔκõºõµÄ³éÏó¸ÅÄî¾ÍÅܳöÀ´ÁË£¬ÕâÀïÎÒ¾Íֻ˵×îºËÐĵÄÒ»µã——º¯ÊýÖеÄthis×ÜÖ¸Ïòµ÷ÓÃËüµÄ¶ÔÏ󣬽ÓÏÂÀ´µÄ¹Êʶ¼½«Î§ÈÆÕâÒ»µãÕ¹¿ª
£¨ÌáÐÑÇ°ÅŵÄͲ×ÓÃÇ×¼±¸ºÃ²èË®ºÍÎ÷¹Ï£¬ÎÒÒª¿ªÊ¼½²¹ÊÊÂÀ²£¡£¡£©
¡¾¹ÊÊ¡¿ÓÐÒ»¸öÄêÇáÈ˽Ð"µÏ˹"£¨this£©,ÓÐÒ»Ì죬µÏ˹²»Ð¡ÐÄ´©Ô½µ½Ò»¸ö½Ð “Ù¤Íß˹¿ËÀû”£¨javascript£©µÄ ÒìÊÀ½ç£¬´Ëʱ´Ë¿ÌµÏ˹ÉíÎÞ·ÖÎÄ£¬ ËûÊ×ÏÈÒª×öµÄÊÂÇé¾ÍÊÇ——ÕÒµ½ËûµÄסË޵ĵط½——µ÷Óú¯ÊýµÄ¶ÔÏó
thisµÄĬÈÏ°ó¶¨
¡¾¹ÊÊ——Ïß·1¡¿Èç¹ûµÏ˹£¨this£©Ö±µ½ÌìºÚÇ°¶¼Ã»ÓÐÕÒµ½ÄÜÊÕÁô×Ô¼ºµÄסËù£¬ËûÑÛ¿´¾ÍÒª¹ýÉÏ·ÇÖÞÄÑÃñµÄÉú»î£¬ Õâʱºò£¬Ò»Î»ÀÖÉƺÃÊ©µÄħ·¨Ê¦´å³¤——window¾ÈÊÀÖ÷Ò»°ãµØ³öÏÖÁË£ºÏÈסÔÚÎÒ¼Ò°É£¡
¡¾ÕýÎÄ¡¿
µ±Ò»¸öº¯ÊýûÓÐÃ÷È·µÄµ÷ÓöÔÏóµÄʱºò£¬Ò²¾ÍÊǵ¥´¿×÷Ϊ¶ÀÁ¢º¯Êýµ÷ÓõÄʱºò£¬½«¶Ôº¯ÊýµÄthisʹÓÃĬÈϰ󶨣º°ó¶¨µ½È«¾ÖµÄwindow¶ÔÏó
function fire () { console.log(this === window) } fire(); // Êä³ötrue
ÉÏÃæµÄÀý×ÓÎÒÏàÐŶԴó¶àÊýÈ˶¼ºÜ¼òµ¥£¬µ«ÓеÄʱºòÎÒÃÇ°ÑÀý×Ó±äһϾͻá¾ßÓÐÃÔ»óÐÔ£º
function fire () { // ÎÒÊDZ»¶¨ÒåÔÚº¯ÊýÄÚ²¿µÄº¯ÊýŶ£¡ function innerFire() { console.log(this === window) } innerFire(); // ¶ÀÁ¢º¯Êýµ÷Óà } fire(); // Êä³ötrue
º¯Êý innerFireÔÚÒ»¸öÍⲿº¯ÊýfireÀïÃæÉùÃ÷ÇÒµ÷Óã¬ÄÇôËüµÄthisÊÇÖ¸ÏòËÄØ£¿ ÈÔÈ»ÊÇwindow
Ðí¶àÈË¿ÉÄÜ»á¹ËÂÇÓÚfireº¯ÊýµÄ×÷ÓÃÓò¶ÔinnerFireµÄÓ°Ï죬µ«ÎÒÃÇֻҪץסÎÒÃǵÄÀíÂÛÎäÆ÷——ûÓÐÃ÷È·µÄµ÷ÓöÔÏóµÄʱºò£¬½«¶Ôº¯ÊýµÄthisʹÓÃĬÈϰ󶨣º°ó¶¨µ½È«¾ÖµÄwindow¶ÔÏ󣬱ã¿ÉµÃÕýÈ·µÄ´ð°¸ÁË
ÏÂÃæÕâ¸ö¼ÓÇ¿°æµÄÀý×ÓÒ²ÊÇͬÑùµÄÊä³ötrue
var obj = { fire: function () { function innerFire() { console.log(this === window) } innerFire(); // ¶ÀÁ¢º¯Êýµ÷Óà } } obj.fire(); //Êä³ö true
¡¾×¢Òâ¡¿ÔÚÕâ¸öÀý×ÓÖУ¬ obj.fire()µÄµ÷ÓÃʵ¼ÊÉÏʹÓõ½ÁËthisµÄÒþʽ°ó¶¨£¬Õâ¾ÍÊÇÏÂÃæÎÒÒª½²µÄÄÚÈÝ£¬Õâ¸öÀý×ÓÎÒ½ÓÏÂÀ´»¹»á¼ÌÐø½²½â
¡¾×ܽ᡿ ·²Êº¯Êý×÷Ϊ¶ÀÁ¢º¯Êýµ÷Óã¬ÎÞÂÛËüµÄλÖÃÔÚÄÄÀËüµÄÐÐΪ±íÏÖ£¬¶¼ºÍÖ±½ÓÔÚÈ«¾Ö»·¾³Öе÷ÓÃÎÞÒì
thisµÄÒþʽ°ó¶¨
¡¾¹ÊÊ——Ïß·2¡¿ µÏ˹£¨this£©´©Ô½À´ÒìÊÀ½ç“Ù¤Íß˹¿ËÀû”£¨javascript£©µÄʱºò£¬¸ÕºÃÉíÉÏ´øÁËһЩǮ£¬ÓÚÊÇËûÕÒµ½Ò»¸öÂùÝסËÞÁËÏÂÀ´
µ±º¯Êý±»Ò»¸ö¶ÔÏó“°üº¬”µÄʱºò£¬ÎÒÃdzƺ¯ÊýµÄthis±»Òþʽ°ó¶¨µ½Õâ¸ö¶ÔÏóÀïÃæÁË£¬Õâʱºò£¬Í¨¹ýthis¿ÉÒÔÖ±½Ó·ÃÎÊËù°ó¶¨µÄ¶ÔÏóÀïÃæµÄÆäËûÊôÐÔ£¬±ÈÈçÏÂÃæµÄaÊôÐÔ
var obj = { a: 1, fire: function () { console.log(this.a) } } obj.fire(); // Êä³ö1
ÏÖÔÚÎÒÃÇÐèÒª¶Ôƽ³£Ë¾¿Õ¼û¹ßµÄµÄ´úÂë²Ù×÷×öһЩ¸üÉîµÄ˼¿¼£¬Ê×ÏÈ£¬ÏÂÃæµÄÕâÁ½¶Î´úÂë´ïµ½µÄЧ¹ûÊÇÏàͬµÄ£º
// ÎÒÊǵÚÒ»¶Î´úÂë function fire () { console.log(this.a) } var obj = { a: 1, fire: fire } obj.fire(); // Êä³ö1 obj = { a: 1, fire: function () { console.log(this.a) } } obj.fire(); // Êä³ö1
fireº¯Êý²¢²»»áÒòΪËü±»¶¨ÒåÔÚobj¶ÔÏóµÄÄÚ²¿ºÍÍⲿ¶øÓÐÈκÎÇø±ð£¬Ò²¾ÍÊÇ˵ÔÚÉÏÊöÒþʽ°ó¶¨µÄÁ½ÖÖÐÎʽÏ£¬fireͨ¹ýthis»¹ÊÇ¿ÉÒÔ·ÃÎʵ½objÄÚµÄaÊôÐÔ£¬Õâ¸æËßÎÒÃÇ£º
1. thisÊǶ¯Ì¬°ó¶¨µÄ£¬»òÕß˵ÊÇÔÚ´úÂëÔËÐÐÆڰ󶨶ø²»ÊÇÔÚÊéдÆÚ
2. º¯ÊýÓÚ¶ÔÏóµÄ¶ÀÁ¢ÐÔ£¬ thisµÄ´«µÝ¶ªÊ§ÎÊÌâ
£¨ÏÂÃæµÄÃèÊö¿ÉÄÜ´øÓиöÈ˵ÄÇé¸ÐÇãÏò¶øÏԵò»Ì«ÑϽ÷£¬µ«ÕâÊÇÒòΪÎÒÏ£ÍûÔĶÁÕß¾¡¿ÉÄܵØÀí½âÎÒÏë±í´ïµÄÒâ˼£©
Òþʽ°ó¶¨Ï£¬×÷Ϊ¶ÔÏóÊôÐԵĺ¯Êý£¬¶ÔÓÚ¶ÔÏóÀ´ËµÊǶÀÁ¢µÄ
»ùÓÚthis¶¯Ì¬°ó¶¨µÄÌص㣬дÔÚ¶ÔÏóÄÚ²¿£¬×÷Ϊ¶ÔÏóÊôÐԵĺ¯Êý£¬¶ÔÓÚÕâ¸ö¶ÔÏóÀ´ËµÊǶÀÁ¢µÄ¡££¨º¯Êý²¢²»±»Õâ¸öÍⲿ¶ÔÏóËù“ÍêÈ«ÓµÓД£©
¡¡