JavaScript中的this

本文深入探讨了JavaScript中this的四种主要指向情况:构造函数、对象方法、直接调用和call/apply/bind调用,以及箭头函数的特殊情况。重点讲解了new操作符如何影响this的指向,并详细阐述了new调用构造函数时的步骤。通过对this的理解,有助于提升JavaScript编程能力。
摘要由CSDN通过智能技术生成

this

注意: 本篇文章属于基础篇, 如果你不够了解,或者了解的还不完整,那么可以通过本文来复习一下

1. this 指向的类型

刚开始学习 JavaScript 的时候,this 总是最能让人迷惑,下面我们一起看一下在 JavaScript 中应该如何确定 this 的指向。

this 是在函数被调用时确定的,它的指向完全取决于函数调用的地方,而不是它被声明的地方(除箭头函数外)。当一个函数被调用时,会创建一个执行上下文,它包含函数在哪里被调用(调用栈)、函数的调用方式、传入的参数等信息,this 就是这个记录的一个属性,它会在函数执行的过程中被用到。

this 在函数的指向有以下几种场景:

  • 1 作为构造函数被 new 调用;
  • 2 作为对象的方法使用;
  • 3 作为函数直接调用;
  • 4 被 call、apply、bind 调用;
  • 5 箭头函数中的 this;

下面我们分别来讨论一下这些场景中 this 的指向。

new 构造的实例对象

函数如果作为构造函数使用 new 调用时, this 绑定的是新创建的构造函数的实例

function Foo(){
  console.log(this)
}
var bar = new Foo()  //输入:Foo实例,this就是barjs

实际上使用 new 调用构造函数时,会依次执行下面的操作:

  • 1创建一个新对象;
  • 2 构造函数的 prototype 被赋值给这个新对象的 proto;
  • 3 将新对象赋给当前的 this;
  • 4 执行构造函数;
  • 5 如果函数没有返回其他对象,那么 new 表达式中的函数调用会自动返回这个新对象,如果返回的不是对象将被忽略;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值