JavaScript学習の旅--thisは問題を指します.

2859 ワード

JSを勉強しているうちに、thisに目がくらむことがよくあります.だから、この文章を書いて理解を深めて、忘れないようにします.まだ初心者なので、不穏当なところがあります.また、ご指導をお願いします.私の現在のレベルでは、thisは関数または対象方法の使用者だと思います.5種類のthisの指向状況をまとめました.
1、グローバルスコープにおいて、関数の中のthisの指向
1 function globalFn(){
2     console.log(this);
3 }
4 console.log(window.globalFn);//globalFn   window     ,       ,         
5 globalFn();//    ,  window
 2、自動実行関数におけるthisの指向
 1 //              
 2 ;(function autoFn(){
 3     console.log(this);//  window
 4 })() 
 5 
 6 //           
 7 var obj={
 8     autoFn:(function(){
 9         console.log(this);//    window
10     })()
11 }
3、dom元素バインディングイベントにおけるthisの指向
1 ele.onclick=function(){
2     console.log(this);//      ele   ,        ele  dom  
3 }
4 
5 //DOM      
6 ele.addEventListener("click",function(){
7     console.log(this);//   ele  dom  
8 },false);
しかし、低いバージョンのIEブラウザではele.atachEvent()を使って代用していますが、このイベントの中のthisには問題があります.
4、コンストラクタにおけるthisの指向
1 function Person(){ //    
2     this.age=22;
3 }
4 var p=new Person();
5 p.age;//   22,   undefined,  this           
5、callとappyでthisの指向を変える
1 var obj={
2     x:123
3 }
4 function fn(){
5     console.log(this.x);
6 }
7 fn.call(obj);//  call  ,fn  this   obj,     123
厳密でないモードでは、もしcall方法にパラメータがない、または最初のパラメータがnull、undefinedであれば、fnの中のthisはwindowを指し、厳格なモードであれば(「use strict」)、最初のパラメータは何ですか?fnの中のthisは何ですか?