【发布时间】:2019-12-27 17:31:25
【问题描述】:
我在阅读 JavaScript 类时遇到了“公共类字段语法”这个术语。在深入挖掘它时,我遇到了这个Babel's documentation on class properties。
有人可以解释一下 - 实现方面,这种新语法的用例是什么? (它为 JavaScript 提供了哪些解决方案/好处,到目前为止还没有这些解决方案/好处?)
下面是一个示例(在 Google Chrome 中运行没有错误):
class Person {
firstName = "Mike";
lastName = "Patel";
// this is a public class field syntax
getName = () => {
return this.firstName + " " + this.lastName;
};
}
var p = new Person();
console.log(p.firstName); // Mike
console.log(p.lastName); // Patel
console.log(p.getName); // () => { return this.firstName + " " + this.lastName; }
console.log(typeof p.getName); // function
console.log(p.getName()); // Mike Patel
【问题讨论】:
-
“特别”是什么意思?如果您希望这会做一些奇怪且不直观的事情 - 那么不,它完全按照您的想法做 - 它会创建两个属性。这只是一开始不可用的新语法。在 Firefox 68 中,这会抛出
SyntaxError: fields are not currently supported -
@VLAZ 我在谷歌浏览器中检查过,它执行没有任何错误。
-
这可能会有所帮助:medium.com/@jacobworrel/…
-
@AadityaSharma 再次出现在 Firefox 中。它是较新的语法,因此并未在任何地方完全实现。这就是重点。这是它唯一“特别”的地方,但我不知道这是否是你认为的“特别”。
-
@AadityaSharma 所以,不是“什么特别”,而是“用例是什么”。因为语法本身并不特殊。用例是您选择这个而不是其他代码的原因。
标签: javascript ecmascript-6 ecmascript-next class-fields