JavaScript基础面试题6--JavaScript中的 this 关键字
前言
- 可以通过
this
在方法中引用调用方法的对象; - 函数在执行时,JS 解释器每次都会传递一个隐含的参数,这个参数就是
this
; this
会指向一个对象;this
所指向的对象会根据函数的调用方式的不同而不同;
1.以函数形式调用时,this 指向的是 window
function fn() {
console.log(this) // window
}
2.以方法的形式调用时,this 指向的是方法的对象
let obj = {name: 'obj'}
obj.test = function () {
console.log(this) // obj
}
3.箭头函数没有自己的 this,由它的外层作用域决定
箭头函数的 this
和它的调用方式无关,也无法通过 call
、 apply
和 bind
修改他的 this
。并且箭头函数没有 arguments
对象。
function fn() {
console.log(this)
}
const fn2 = () => {
console.log(this)
}
const obj = {
name: '猪八戒',
fn,
fn2,
}
obj.fn() // obj
obj.fn2() // window