如何确定this的值?如何指定this的值?

本文详细解释了JavaScript中this值在不同模式(严格模式和非严格模式)下的行为,以及如何在函数调用时和创建时通过call、apply、bind和箭头函数指定this的值。后续章节将深入解析call和apply方法的工作原理。
摘要由CSDN通过智能技术生成

1.如何确定this的值:

js脚本的执行分为严格模式和非严格模式,不同的模式下,this的值有可能也是不一样的。在非严格模式下,this的值总是指向一个对象;在严格模式下,this的值可以指向任意值。

判定this的值,分为以下两种情况

1.全局执行环境中,指向全局对象(严格模式,非严格模式)

2.函数内部,取决于函数被调用的方式

2.1 直接调用时,在严格模式下,值为undefined

非严格模式下,值为window

2.2 通过对象方法调用时,在严格模式和非严格模式下,this的值都指向调用的对象

非严格模式下:

严格模式下 :

2.如何指定this的值

如何改变this的值?改变this的值,可以分为两种方式,分别是在函数调用时改变在函数创建是改变。

2.1  函数调用时改变this的值:

2.1.1 使用call方法改变this

2.1.2 使用apply方法改变

注:call方法的入参依次传入,apply方法的入参通过数组的方式传入

2.2 函数创建是改变this的值:

2.2.1 通过bind方式改变this的值

注:通过bind改变this后,函数不会立即执行,而是会生成一个新的函数,需要手动执行新的函数

2.2.2 通过箭头函数改变this

箭头函数中没有this,其this是指向对应的上下文中的this值。

下一章,将讲解一下如何手写call,apply,bind方法,带着大家熟悉一下该方法下的底层原理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值