【问题标题】:Syntactic sugar for JavaScript Constructor [duplicate]JavaScript构造函数的语法糖[重复]
【发布时间】:2020-12-14 04:07:33
【问题描述】:

假设我们有一个简单的构造函数;

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

我宁愿如下使用。

function Person(firstName, lastName);

//or

class Person(firstName, lastName);

我查看了文档,但找不到任何东西。除了框架之外,原生 javascript 是否有任何语法糖或类似的东西?

【问题讨论】:

  • 你问是否有创建类的简写语法?
  • 我认为 OP 正在寻找一种方法来缩短构造函数代码。例如,Parameter Properties in TypeScript 之类的东西。 @gurkan TypeScript 是一种选择吗?
  • @gurkan - 恐怕我不记得我在哪里看到的了。这不是一个提议或任何东西,只是一个临时的评论。我相当确定的一件事是,如果发生这种情况,它不会在参数声明中使用 publicprivate 关键字遵循 TypeScript 路径。 :-) 如果它真的发生了,至少需要几年的时间。
  • @str 感谢您找到这些重复的主题!

标签: javascript syntactic-sugar ecmascript-next


【解决方案1】:

你问过 JavaScript 本身是否有任何原生的东西可以做到这一点。答案是否定的,JavaScript 目前不支持。您必须自己编写属性分配(无论是在第一个代码块中的方式,还是在 class 中的 constructor 定义中)。


除了 JavaScript 本身之外,还有可以编译为 JavaScript 的类似语言,TypeScript 有Parameter properties 如下:

class Octopus {
  constructor(readonly name: string) {}
}

let dad = new Octopus("Man with the 8 strong legs");
dad.name;

请注意我们如何 [...] 只使用缩短的 构造函数上的readonly name: string参数创建和 初始化name 成员。我们整合了声明和 分配到一个位置。

参数属性通过在构造函数参数前加前缀来声明 使用可访问性修饰符或readonly,或两者兼而有之。使用private 参数属性声明并初始化私有成员; 同样,publicprotectedreadonly 也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 2015-12-01
    • 2014-07-05
    • 2019-04-14
    • 1970-01-01
    • 2019-01-11
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多