JavaScript this対象のまとめ

1404 ワード

thisキーワードは、その関数を含むオブジェクトのメソッドとして呼び出された時のオブジェクトです.
変数と違って、キーワードthisは機能領域の制限がなく、入れ子の通信は呼び出し関数からthisを継承しません.ネスト関数がメソッドとして呼び出された場合、そのthis値は彼を呼び出す対象を指し、ネスト関数が関数として呼び出された場合、そのthis値はグローバルオブジェクトではなくundefinedである.
上は2冊の比較的権威のある本で、jsの定義に対して.
thisはjsのキーワードです.関数の使用によって、thisの値が変わります.でも、一つの原則があります.つまり、thisは関数を呼び出す対象だけです.
JavaScriptには他の言語とは全く異なる対応メカニズムがあります.5つの異なる場合、thisはそれぞれ異なる対象を指す.
  • グローバル範囲内
  • this;//         this,this        window
  • 関数呼び出し
  •   : foo();//   foo     this        。 window
  • メソッド呼び出し
  •   : test.foo();//  foo     this     test  。
  • 構築関数を呼び出します.
  • new foo();// new      ,         。     this        
  • は、this
  • を示しています.
  • Funtions.prototype上のcallまたはapply方法を使用すると、関数内部のthisが関数呼出しの最初のパラメータ
  • として明示的に設定されます.
  • 特殊事情
  • Foo.method = function(){
        function test(){
            //this          (  window  )
        }    
    }
        よくある誤解はtestの中のthisはFooの対象を指します.実は彼はwindow全体の対象を指しています.
        7.自分で集めた
    var shi = {
            init:function(){
                this.button();
            },
            button:function(){
                console.log(this == shi);//true
                console.log(this);//Object
                console.log("shi----button")
            }
        }
            一つのjsonオブジェクトの中のthisは彼自身を表しています.