zoukankan      html  css  js  c++  java
  • this指向函数作用域 yes or no?-------1

    this指向函数作用域,对也错

    function foo(){
      var a=2;

      this.bar();//this 指向window
    }
    function bar(){

      console.log(this.a);//指向window

    }

    foo();   //RegereceError: a is not defined    

    ---------------------------------------------------------默认绑定 :独立函数调用。(不带任何装饰即不被引用的函数引用进行调用)↓

    function foo(){
      console.log(this.a);  //this指向window
    }
    var a=2;

    foo();//2    

    ------------------------严格模式下 ↓
    function foo(){

      'use strict';//严格模式下,全局对象不能进行默认绑定

      console.log(this.a);//this指向undefined

    }

    var a=2;

    foo();// typeError:this is undefined

    ---------------------------------------------------------隐式绑定↓

    funcction foo(){

      console.log(this.a);//指向foo的调用者    即obj    

    }

    var obj={

      a:2,

      foo:foo

    }

     obj.foo();//  2        obg下的foo调用    foo不属于obj   而是指向了obj

    ---------------------↓对象属性引用链中只有最顶层或者说最后一层会影响调用位置

    function foo(){

      console.log(this.a);//this指向obj2

    }

    var obj2={

      a:42,

      foo:foo

    }

    var obj1={

      a:2,

      obj2:obj2

    }

    obj1.obj2.foo();   //42   理解:最终foo的上下文是obj2的作用域 即直接引用的obj2  this指向obj2

    -----------**?**----------↓this 绑定被隐式绑定的函数会丢失绑定对象,也就是说它会应用默认绑定,从而把this绑定到全局对象或者undefined上,这取决于是否是严格模式

    function foo(){

      console.log(this.a);

    }

    var obj={

      a:2,

      foo:foo

    };

    var bar=obj.foo;  //obj.foo   this指向obj的此法作用域       bar=obj.foo 把foo函数的引用指向了全局对象bar   即this指向了window

    var a='oppsGlobal';

    bar();//'oppsGlobal'

     同样的函数调用结果----↑↓

    function foo(){

      console.log(this.a);

     var obj={

      a:2,

      foo:foo

    };

    var a="oopsGlobal";

    setTimeout(obj.foo,100);// 'oppsGlobal'

    理解:setTimeout内部实现机制类似:

     setTimeout(fn,time);

     function setTimeout(fn,time){

      fn();//this指向window;
      }

  • 相关阅读:
    0302思考并回答一些问题
    0104 自下而上
    1203 有穷自动机的构造
    11 10我的评论
    1029 C语言文法翻译(2)
    1014 对编译程序的心得与总结
    我们小组的编译程序
    0921 词法分析程序
    0909 关于编译原理的思考
    数据库设计之数据库设计三大范式
  • 原文地址:https://www.cnblogs.com/trend/p/7527266.html
Copyright © 2011-2022 走看看