在命名方法时也可以评估表达式,类似于使用可以访问对象属性的方法[]。这对于具有动态属性名称很有用,但是通常与符号结合使用。
let METADATA = Symbol('metadata'); class Car { constructor(make, model) { this.make= make; this.model= model; } // 使用符号的例子 [METADATA]() { return { make: this.make, model: this.model }; } // 您还可以使用任何JavaScript表达式 // this one is just a string, and could also be defined with simply add() ["add"](a, b) { return a + b; } // 这是动态评估的 [1 + 2]() { return "three"; } } let MazdaMPV = new Car("Mazda", "MPV"); MazdaMPV.add(4, 5); // 9 MazdaMPV[3](); // "three" MazdaMPV[METADATA](); // { make: "Mazda", model: "MPV" }