• this


    this:执行上下文,this一般存在于函数中,表示当前函数的执行上下文,如果函数没有执行,那么this没有内容,只有函数在执行后this才有绑定

    1.默认执行:fn(): 全局作用域或者普通函数中this指向window,严格模式指向undefined

    例子:  function fn(){

          "use strict"
          console.log(this)
          }
          fn()

    2.通过对象执行(通过上下文对象执行,隐式执行)

    function fn(){
    console.log(this)
    }
    var a = 10;
    var obj = {
    a:20,
    b:fn
    }
    obj.b();

    var obj2 = {
    a:30,
    b:obj.b
    }

    3.显式执行(通过函数的方法bind执行):指定的是谁,就是谁
    function fn(){
    console.log(this)
    }
    var f = fn.bind(123);
    f();

     找回隐式丢失的this,其实就是使用显式执行,强行绑定
    setTimeout(obj.b.bind(obj), 3000);

     谁执行了this所在的函数,this就是谁

     场景:
     1.默认执行:非严格模式下指向window
      window || undefined
     2.隐式执行:通过任意对象执行
       直接的执行对象
     3.显式执行:通过函数的bind或call或apply执行
       写谁就谁

    function fn(){
    console.log(this)
    }
    var obj = {}
    obj.fn = fn;

    obj.fn();         //obj

    var obtn = document.getElementById("btn");
    obtn.onclick = fn;
         点击时          //obtn

    fn.bind("hello")();       //"hello"

    var f = fn.bind(obj);
    f();        //obj

    fn();              //window


    4.构造函数执行(通过new执行)   



     

  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/wss521/p/11439163.html
Copyright © 2020-2023  润新知