在此ES6示例中,“静态”是什么意思?

时间:2018-08-27 18:49:37

标签: javascript ecmascript-6

此示例来自Stimulusjs的文档。我已经能够找到有关ES6静态方法的文档,但这看起来并不像方法。还是这是一种速记?为什么变量有一个“静态”关键字?

export default class extends Controller {
  static targets = [ "name" ]

  greet() {
    const element = this.nameTarget
    const name = element.value
    console.log(`Hello, ${name}!`)
  }
}

1 个答案:

答案 0 :(得分:4)

使用babel's transform-class-properties plugin时允许使用该语法。普通javascript中的等效项为:

class MyClass extends Controller {
  greet() {
    const element = this.nameTarget
    const name = element.value
    console.log(`Hello, ${name}!`)
  }
}

MyClass.targets = ["name"];

export default MyClass

编辑:在ES6之前,可以通过以下方式完成

var MyClass = function () {
  Controller.call(this);
};
MyClass.prototype = Object.create(Controller.prototype);
MyClass.prototype.greet = function () {
    var element = this.nameTarget
    var name = element.value
    console.log('Hello, ' + name + '!');
}
MyClass.targets = ["name"];