
JS原理
JavaScript中的this

this到底是谁?
有可能是全局对象window,也有可能是调用者,还能人为设置(设置方法call,apply,bind)
1. 如何确认this的值(严格模式下的this)
2. 如何指定this的值
3. 手写call、apply 、 bind
1. 如何确认this的值?

如果没有特殊设置,都是非严格模式
如何开启严格模式?—— 'use strict' 需要写在代码(不包含注释)最顶端
严格模式中的this是谁?
代码实验:
严格模式、在全局执行环境获取this

非严格模式、在全局执行环境获取this

非严格模式、(直接调用)在函数内部(函数作用域)获取this

严格模式、(直接调用)在函数内部(函数作用域)获取this

非严格模式、(对象方法调用)在函数内部(函数作用域)获取this

严格模式、(对象方法调用)在函数内部(函数作用域)获取this

如何确认this的值?
1.全局执行环境
严格模式,非严格模式:全局对象(window)
2.函数内部
2.1 直接调用
严格模式下:undefined
非严格模式:全局对象(window)
2.2 对象方法调用
严格模式,非严格模式:调用者
3.开启严格模式
脚本开启: 'use strict'
函数内部开启:'use strict'
注意:'use strict'写在代码顶端
2.如何指定this的值?

记忆区分call、apply:apply的首字母a是数组array的首字母。
call挨个传入参数:

apply以数组的方式传入参数

bind返回一个新函数

bind绑定时已经传入一个参数:

非严格模式、(普通)函数内部对象调用获取this值
& 非严格模式、(普通)函数内部直接调用(获取)this值

非严格模式、箭头函数

本文详细介绍了JavaScript中this的关键概念,包括在不同环境下的行为、严格模式下this的变化,以及call、apply和bind的作用。此外,还涵盖了JavaScript的类与继承、fetchAPI的基础使用和Generator的管理异步。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



