• this


    含义: this指向函数运行时的执行环境。而这个执行环境跟函数的声明没关系

    列子:

    var obj = {
      foo: function () { console.log(this.bar) },
      bar: 1
    };
    
    var foo = obj.foo;
    var bar = 2;
    
    obj.foo()  //1
    foo(); // 2

    obj.foo()  foo函数运行时所处的环境是 obj环境 而 foo()函数运行时所处的环境是全局环境 也就是window环境。所以  方式1: this 执行了 函数运行时的环境obj 而方式2执行了函数运行时的环境window环境。那么

    方式1取到的this.bar ===> obj.bar  方式2取到的this.bar ===> window.bar。

    改变this指向:(显示绑定)

    var obj = {
      foo: function () { console.log(this.bar) },
      bar: 1
    };
    
    var foo = obj.foo;
    var bar = 2;
    
    obj.foo()  //1
    foo.call(obj); // 1
    

     首先概括一下 call方法: 函数也是对象,是对象也会有属性和方法。call方法就是函数的一个 方法,这个方法是继承于Function.prototype  所有开发者声明的函数 都是属于Function的实例 fn.constructor === Function。

    call:把第一个参数,作为该函数运行时的上下文或执行环境。也就是说 foo.call(obj) 运行时的执行环境即this 已经变为obj了 所以输出了 1。

    类似方法: call apply bind 

    不同点: call(context,参数1,参数2)

        apply(context,[参数1,参数2]) 

        bind(context,参数1,参数2)();  //函数不会自执行 需要手动调用

  • 相关阅读:
    双启利器EasyBCD帮你找回消失了的Windows
    去掉不需要的加载项,让你的Office软件运行如飞
    Windows 7中的无损分区工具Partition Master
    IIS目录浏览模式时,ISO等文件显示不存在的解决方案
    必须常去论坛
    SSOについての英訳練習
    1月21日
    080124 (30,20)
    080122 (30,25)
    九局下半
  • 原文地址:https://www.cnblogs.com/yunnex-xw/p/9772826.html
Copyright © 2020-2023  润新知