JavaScript学習の旅--thisは問題を指します.
2859 ワード
JSを勉強しているうちに、thisに目がくらむことがよくあります.だから、この文章を書いて理解を深めて、忘れないようにします.まだ初心者なので、不穏当なところがあります.また、ご指導をお願いします.私の現在のレベルでは、thisは関数または対象方法の使用者だと思います.5種類のthisの指向状況をまとめました.
1、グローバルスコープにおいて、関数の中のthisの指向
4、コンストラクタにおける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は何ですか?