在课堂内使用es6箭头功能

1 javascript ecmascript-6

当我更改一个函数时draw(){ //},draw = () => { // } 我收到一个错误,如"Uncaught SyntaxError:Unexpected token =".可能是什么原因?

小智 8

首先,你可能不应该这样做.为什么?好吧,因为箭头函数在语义上与常规函数不同.

如果将函数注册为this.draw = () => {//},那么class*的每个实例都将具有该函数的重复定义,这会浪费空间并滥用某些核心语言功能(如原型继承).

draw()另一方面,寄存器上的prototype函数可以在所有实例之间共享draw函数的定义,甚至可以同时为ALL实例动态更改.


And*_*one 3

在你的构造函数中你可以拥有this.draw = () => {//},但这样做并没有多大意义。draw(){//}应该适合你想要的任何东西。

下面,在我的示例中,我展示了两个用例,因为您可以看到使用箭头函数没有保存任何内容。

class StandardFunction {
  draw() {
    console.log('StandardFunction: you called draw')
  }
}

class ArrowFunction {
  constructor() {
    this.draw = () => {
      console.log('ArrowFunction: you called draw')
    }
  }
}

const test1 = new StandardFunction();
const test2 = new ArrowFunction();

test1.draw();
test2.draw();
Run Code Online (Sandbox Code Playgroud)

我希望你觉得这有帮助