箭头语法VS ES5功能范围

时间:2017-09-26 05:09:32

标签: javascript ecmascript-6

我试图尝试一些JavaScript代码。我不确定ES6语法失败的原因。



String.prototype.spacify = function() {
  console.log(this.split('').join(' '));
}

'hello world'.spacify();  




^^这很棒! 但是,当我这样做时



String.prototype.spacify = () => {
  console.log(this.split('').join(' '));
}

'hello world'.spacify();  




当我将函数转换为箭头函数时,我得到了.split未定义。我不明白。箭头语法是否在范围界定方面做了特别的事情?

请指教!

2 个答案:

答案 0 :(得分:2)

arrow function中,this的上下文指的是外this。此处,函数this的{​​{1}}等于箭头函数中的test

箭头函数不会创建它自己的上下文,它只需要外部上下文

this

答案 1 :(得分:0)

在箭头功能中,范围不会改变。

含义:

const globalThis = this;

String.prototype.spacify = () => {
  // this === globalThis
  ...
}