箭头函数与this对象

ES6标准新增了一种新的函数--箭头函数,所谓箭头函数,即其定义有个箭头(=>)
x=>x*x相当于
function (x){
return x*x;
}
箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。  在闭包中使用this对象可能会出现问题:
var name="the window";
var object={
name:"my object";
getnamefunc: function(){
return function(){
return this.name;
};
}
};
alert(object.getnamefunc()());
显示的值是the window;
原因是在闭包函数中,object.getnamefunc()()被调用时自动取得两个特殊变量:this和arguments,
函数在搜索这两个变量时,只搜索到其活动对象位置,不会搜索到外部作用域中,因此不会访问外部作用域中的变量。
修改:
var name="the window";
var object={
name:"my object";
getnamefunc: function(){
var that=this;
return function(){
return that.name;
};
}
};
alert(object.getnamefunc()());在包含函数中特意声明一个变量that,这样显示的值就是“my object”了
也可以使用箭头函数:
var name="the window";
var object={
name:"my object";
getnamefunc: function(){
return ()=>this.name;
};
}
};
alert(object.getnamefunc()());
显示的值也是“my object”





猜你喜欢

转载自blog.csdn.net/greedy__/article/details/79218440