es6中箭头函数的this
文章类型:ES6
发布者:hp
发布时间:2025-03-01
1:箭头函数的this在定义时确定,继承自父级作用域的this值,而非调用的对象
2:如果父级作用域是普通函数或者全局环境,则this指向父级的this或全局对象
3:若父级作用域仍是箭头函数,则继续向上查找,知道找到非箭头函数的this
1:全局作用域定义
const fn = () => console.log(this);
fn(); // 输出 window(浏览器环境):ml-citation{ref="1,6" data="citationList"}
2:作为对象方法
const obj = {
name: 'obj',
method: () => console.log(this.name)
};
obj.method(); // 输出 undefined(this 指向全局对象):ml-citation{ref="5,6" data="citationList"}
3:嵌套在普通函数中
function outer() {
const inner = () => console.log(this);
inner();
}
outer.call({name: 'test'}); // 输出 {name: 'test'}:ml-citation{ref="3,4" data="citationList"}
1:避免在对象方法中使用箭头函数,对象方法动态绑定this时,箭头函数会导致this错误指向全局
2:无法通过常规方法修改this
3:与class结合时,this指向class实例
1:特性上
普通函数this=>动态绑定,取决于函数调用方式,可能是全局、调用它的或显示绑定的对象
剪头函数this=>没有自己的this,会捕获上下文的this作为自己的this,无论怎么调用,始终保持不变
2:可修改性上
普通函数this=>可通过call\apply\bind修改
剪头函数this=>不可修改
3:arguments对象上
普通函数=>存在
箭头函数=>不存在
1:箭头函数的this始终静态绑定到定义时的父级作用域
2:解决了传统函数this的动态绑定导致混淆问题
暂无评论,快来发表第一条评论吧~