美文网首页
js中的this

js中的this

作者: 前端二营长 | 来源:发表于2020-06-27 18:01 被阅读0次

javascript中的this

javascript中的this与java中的this有点不同。
ECMAScript规范中这样写:

  • this 关键字执行为当前执行环境的 ThisBinding。

MDN上这样写:

  • 在绝大多数情况下,函数的调用方式决定了this的值。

可以这样理解,在JavaScript中,this的指向是调用时决定的,而不是创建时决定的,这就会导致this的指向会让人迷惑,简单来说,this具有运行期绑定的特性。

一般情况下,谁调用,this就指向谁

执行上下文生命周期分为三阶段,创建、执行、回收上下文。

  • 执行上下文的创建阶段,会分别生成变量对象,建立作用域链,确定this指向
  • 执行上下文的执行阶段,会分别变量赋值,函数引用,执行其他代码

首先要明确一个非常重要的结论:this的指向是在函数被调用的时候确定的,也就是执行上下文创建时

  var a = 10;
  var obj = {
      a: 20
  }

  function fn() {
      console.log(this.a);
  }

  fn(); // 10
  fn.call(obj); // 20 call改变this指向到obj

全局this

有一个很好玩的情况:

    var a = 10
    function prin() {
        var a = 30;
        console.log(this.a) 
    }
    prin() // 10 windows调用的函数,所以this指向windows a = 10
    console.log(a) // 10
    var a = 10
    function prin() {
        a = 30;
        console.log(this.a) 
    }
    prin() // 30
    console.log(a) // 30

相关文章

  • JavaScript 04 (do...while循环/for

    js循环,js循环嵌套,js do...while循环,js的for循环,js中的break,js中的contin...

  • iOS原生&JS交互

    OC 获取js中的key OC调用js方法 JS调用OC中不带参数的block JS调用OC中带参数的block ...

  • JS 对象

    JS对象 JS对象的意义和声明 在JS中,对象(OBJECT)是JS语言的核心概念,也是最重要的数据类型。在JS中...

  • 单引号和双引号

    JS中 js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和...

  • js中的this

    一句话,call的第一个参数 看几个例子例1. 这里的this是什么?不要靠猜,是call的第一个参数,不知道去看...

  • js 中的this

    首先js中函数的this在函数被调用时总是指向一个对象(this对象是在运行时基于函数的执行环境绑定的) 然后 它...

  • JS中的this

    JS中的this 众所周知,JS中this的代表的是当前函数调用者的上下文。JS是解释性的动态类型语言,函数在调用...

  • js中的!!

    !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false。 var...

  • js中的this

    目标:js中this的指向? 问题的引出 指出this指向什么 js中函数的三种调用形式 func(p1, p2)...

  • JS中的this

    初学JavaScript经常被this绕晕,所以我总结一下JavaScript中的this。首先声明本文讨论的是非...

网友评论

      本文标题:js中的this

      本文链接:https://www.haomeiwen.com/subject/iosvfktx.html