一、普通函数的this
函数在执行时,JS解析器每次都会传递进一个隐含的参数,这个参数就叫做this。
this会指向一个对象。
1.this所指向的对象会根据函数调用的方式的不同而不同。
(1)以函数形式调用时,this指向window
function fn(){
console.log(this)//指向window
}
fn()
(2)以方法的形式调用时,this指向的是调用方法的对象(obj是谁,this就是谁)
function fn(){
console.log(this)//指向window
}
const obj={name:"孙悟空"}
obj.test=fn
obj.test()//{name:"孙悟空"}
2.通过this可以在方法中引用调用方法的对象
二、箭头函数的this
箭头函数:
([参数])=>返回值
例子:
无参箭头函数:() => 返回值
一个参数的:a => 返回值
多个参数的:(a, b) => 返回值
只有一个语句的函数:() => 返回值
只返回一个对象的函数:() => ({...})
有多行语句的函数:() => {
....
return 返回值
}
箭头函数没有自己的this,它的this有外层作用域决定
箭头函数的this和它的调用方式无关
function fn() {
console.log(this);
}
const fn2 = () => console.log(this)
// fn()//window
// fn2()//window
const obj = {
name: "孙悟空",
fn, //相当于fn:fn,属性值和属性名一致时,可以简写
fn2
}
obj.fn() //obj
obj.fn2() //window