es7中箭头函数的this指向和传统的this指向的区别?

原创 sean5120scan 教程 es6 380阅读 2017-08-25 15:22:09 举报

箭头函数的this绑定看this所在的函数定义在哪个对象之下,绑定到哪个对象,则this指该对象,如果有对象的嵌套的情况,则this指向的是最近的一层对象
非箭头函数中的this指向的是调用执行时的对象。如果是某个对象调用它,那么this指向该对象,如果全局环境下调用它,则指向window对象
var obj1={
num:4,
fn:function(){
var f=() => { //object,也就是指obj1
console.log(this);
setTimeout(() => {
console.log(this);// //object,也就是指obj1
});
}
f();
}
}
obj1.fn();

var obj1={
num:4,
fn:function(){
var f=function(){
console.log(this); //window,因为函数f定义后并没有对象调用,this直接绑定到最外层的window对象
setTimeout(() => {
console.log(this);//window,外层this绑定到了window,内层也相当于定义在window层(全局环境)
});
}
f();
}
}
obj1.fn();

评论 ( 2 )
最新评论
sean5120scan 1F 2017-08-25 15:55:08 2F

es6简化了es5中函数的写法。l大大提高了效率。同时this指向也相对单一。不像之前this随调用对象的不同而改变

大大大大糖糖 2017-08-25 15:39:25 1F

es6