zoukankan      html  css  js  c++  java
  • 绕不开的this

    犹豫两秒要不要整理this,从红皮书上看了半天,没搞懂哎(弱爆了)


    什么是this?
    this是在执行上下文创建时期创建的一个执行过程中不可改变的变量。
    执行上下文是指js引擎会将代码执行前需要的变量this提前声明好保存在变量对象中的过程,作用域链也保存在这样类似数组的形式存储在函数中的scope属性中。
    this之所以有多变性是因为this只在创建阶段调用,执行上下文创建阶段复制。

    this在不同情况下的指向不同

    1、严格模式下
    this的指向是undefine
    2、非严格模式下,this指向的是window,当obj在全局声明的时候,内部的this指向全局对象,当obj在一个函数中声明的时候(也就是作为纯函数),严格模式下this会指向undefine,非严格模式会自动转为全局对象。
    3、作为对象的用法this等于那个对象,指向调用对象

    var a = 1;
    var obj = { 
        a: 2,
        b: function() { 
        return this.a;
        } 
    } 
    console.log(obj.b())//2

    分析:定义了一个全局变量,然后定义了一个对象,会返回一个字符串,调用的是obj的b方法,所以返回的是2

    var a = 1;
    var obj = { 
      a: 2, b: function() { return this.a; } } var t = obj.b; console.log(t());//1

    分析:调用obj.b()时会立即返回一个字符串,只能找到 var = 1

    4、call、apply、bind会将this绑定给对象,可以改变this的指向

    5、构造函数
    函数和new关键词一起使用时,我们称函数为构造函数,首字母大写(化成灰老子也认识你),this指向新创建出来的对象。
    6、箭头函数
    不能用call和apply,会捕获其上下文的this值,在创建的时候就已经绑定

    7、定时器中的this指向的是window

     

     

    总结

    关于this万变不离其宗,this永远指向正在执行的函数或者对象

                   

  • 相关阅读:
    asr相关技术总结
    SLURM 使用基础教程
    FSMN 及其变种 cFSMN DFSMN pyramidal-FSMN
    均方根误差(RMSE),平均绝对误差 (MAE),标准差 (Standard Deviation)
    linux文本编码格式转化 字幕处理
    PyTorch-Kaldi 语音识别工具包
    SRILM Ngram 折扣平滑算法
    awk 调用 shell 命令,并传递参数
    用 scikit-learn 和 pandas 学习线性回归
    逻辑回归 及 实例
  • 原文地址:https://www.cnblogs.com/jinzhou/p/9075814.html
Copyright © 2011-2022 走看看