JavaScript中的this
在绝大多数情况下,函数的调用方式决定了 this
的值(运行时绑定)。this
不能在执行期间被赋值,并且在每次函数被调用时 this
的值也可能会不同。
如何确认this的值:
在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。
1.全局执行环境中,指向全局对象(非严格模式、严格模式)
2.函数内部,取决于函数被调用的方式
1.直接调用的this值:
a.非严格模式:全局对象(window)
b.严格模式:undefined
2.对象方法调用的this值:调用者
/**
* 如何确认this的值
* 1.全局执行环境
* 严格模式,非严格模式:全局对象(window)
* 2.函数内部
* 2.1 直接调用
* 严格模式下:undefined
* 非严格模式:全局对象(window)
* 2.2 对象方法调用
* 严格模式,非严格模式:调用者
* 3.开启严格模式
* 脚本开启: 'use strict'
* 函数内部开启:'use strict'
* 注意:'use strict'写在代码顶端
* */
// ------------- 1.全局执行环境 -------------
// 严格模式,非严格模式 全局对象(window)
// 'use strict'
// console.log(this)
// ------------- 2.函数内部 -------------
// 2.1 直接调用-非严格模式
// function func() {
// console.log(this) // window
// }
// func()
// 2.1 直接调用-严格模式
// function func() {
// 'use strict'
// console.log(this) // undefined
// }
// func()
// 2.2 对象方法调用
const food = {
name: '猪脚饭',
eat() {
'use strict'
console.log(this)
}
}
// 非严格模式,严格模式
food.eat() // 调用者
最近要学java了
嗯啊,我新入职的这家公司,后端全是java,还是很有市场的