标签 arrow function 下的文章

ES6 中 Arrow Function 的 this 作用域

<script>

var array = [1,21,31,456,6,52,3,41];
//数组的最大值:ES5
Array.prototype.max = function()
{
console.log(this);//array
return Math.max.apply(Math,this);
};
console.log('max',array.max());
//数组的最大值:ES6
Array.prototype.max = () =>
{
console.log(this);//window
return Math.max.apply(Math,this);
};
console.log('max',array.max());

</script>


一开始不能理解,为什么Arrow Function里的`this`指代`window`对象,

后来google了一番,

发现

`function()`里的`this`是在调用该方法确认的,

而,Arrow Function里的`this`是在运行脚本时确认的。

 

在`array.max()`调用时`this`才指代为array,

而,Arrow Function里的`this`是在脚本执行到时就已经指代了this为它的父级`window`。