JavaScript漫谈之执行上下文与this

本文深入探讨JavaScript中的执行上下文与this关键字。执行上下文定义了函数调用的方式,决定了this的值。this的绑定规则包括默认绑定、隐式绑定、显示绑定和固定绑定。默认绑定在严格模式下指向undefined,非严格模式下指向全局对象;隐式绑定取决于函数被调用的方式;显示绑定和固定绑定可通过call()和apply()方法实现。此外,箭头函数的this保持词法环境一致性,new关键字则会创建新的执行上下文并绑定到新对象。
摘要由CSDN通过智能技术生成

图片来自网站wallhaven

this,即当前执行代码的环境对象。

换句话说,执行的每个JavaScript函数都有对其当前执行上下文的引用,称为this

一、执行上下文

执行上下文代表函数的调用方式,大多数情况下,函数的调用方式决定了this的值。即,执行上下文决定了this的值。

要理解这个关键字this只需要this取决于函数的调用方式,跟函数声明以及声明位置没关系

比如看下面这段代码:

function person() {
   
    console.log(this.name);
}

let name = "sueRimn";
let one = {
   name: "八至", age: 22};
let two = {
   name: "小九", age: 22};

person();     // "sueRimn"
one.person(); // "八至"
two.person(); // "小九"

代码中函数person()的执行任务是打印出this.name,即打印当前执行上下文的name属性的值。

当函数person()没有被调用时,执行上下文也没有指定,默认为当前全局下,this.name就是全局变量的值"sueRimn"

one.person()是代表函数person()one调用,此时函数的执行上下文是one,即执行上下文this.name的值就是one.name的值,two.person()也是相同道理。

注意

  • this不能在函数执行期间被赋值
  • 函数每次被调用时this的值不同

二、this关键字的绑定规则

this的绑定分为:

  • 默认绑定与隐式绑定
  • 显示绑定与固定绑定
1、默认绑定和隐式绑定
  • 严格模式下:this的默认值是undefined
  • 非严格模式下:this默认指向全局对象
  • 在函数内部,this的值取决于函数被调用的方式
  • 当有一个作为方法调用的对象属性时,该对象是该方法的this对象或执行上下文对象,这是this关键字的隐式绑定

只要记住,在函数内部,this的值取决于函数被调用的方式,与函数声明时间、地点无关

//在浏览器中, window对象同时也是全局对象
// this的默认绑定
console.log(this === window);//true
const AG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值