this 指向

 this-->当前行为发生的主体就是this,但是this是谁和这个方法在哪执行的或者在哪定义的都没有半毛钱的关系
    如何的区分JS中的this?
    1)函数执行,看函数名前面是否有".",有的话"."前面是谁this就是谁,没有的话this就是window
       var person = {
           name: "程明杰",
           eat: function () {
               console.log(this);//-->person
               console.log("人是铁饭是钢,一顿不吃饿得慌~~");
           }
       };
       person.eat();
       function fn() {
           function f() {
               console.log(this);//-->window
           }
           f();
       }
       fn();
    2、自执行函数中的this永远是window
       ~function () {
           console.log(this);//this-->window
       }();
       var obj = {
           //把自执行函数的返回值100赋值给obj下的属性名fn-->obj.fn=100
           fn: (function () {
               console.log(this);//window
               return 100;
           })()
       };
    3、给元素的某一个事件绑定方法的时候,只有事件被触发了才会执行对应的函数,此时函数中的this是当前的元素
    oDiv.onclick=function(){
       console.log(this); //this-->oDiv
    }
    this只有在函数执行的时候我们才能确认执行的主体,但是和在哪执行没关系
       function fn() {
           console.log(this); //函数不执行它是是谁我也不知道
       }

 来源:珠峰培训

原文地址:https://www.cnblogs.com/zjx2011/p/5001070.html