情况一:

     如果一个函数中有this,但是没有被上一级调用,this指向window

    例:

     function a(){

          var num='11';

          console.log(this.num);  //undefined

          console.log(this)           //window

    }

    a()

情况二:

    如果一个函数有this,该函数被上一级调用,this指向上一级函数

    例:

     var o={

         a:'11',

         b:function(){

             console.log(this.a);     //11

             console.log(this)         //o

        }

   }

   o.b();

情况三:

   如果一个函数中有this,且该函数包含多个对象,尽管这个函数被最外层调用,this仍指向它的上一级对象

   例:

   var o=function(){

         a:'11',

         b:function(){

              a:'22',

              c:function(){

                      console.log(this.a);

                      console.log(this)

              }

         }

    }

    o.b.c();

    //22    b{}

    var j=o.a.b();

    j()

   //undefined  window

    赋值给变量j的时候并没有执行所以最终指向的是window