• 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;
      }

  • 相关阅读:
    C语言数据类型大学霸IT达人
    无线攻击工具MDK3常用命令大学霸IT达人
    WPS漏洞利用工具Bully常见命令集合
    无线密码离线破解工具Pyrit常用命令集合大学霸IT达人
    Wifite工具常用命令集合大学霸IT达人
    Linux防火墙命令大全
    详解nginx的rewrite应用,Nginx高级之Rewrite规则
    Nginx常用屏蔽规则,让你的网站更安全
    Nginx与安全有关的几个配置
    systemd 和 systemctl 使用深入理解
  • 原文地址:https://www.cnblogs.com/trend/p/7527266.html
Copyright © 2020-2023  润新知