Javascript ES6 类属性赋值

标签 javascript oop es6-class

今天看到一种新的语法,JS类可以赋值它们的属性,像这样:

// Syntax 1
class foo {
  constructor(prop){
    this.prop = prop;
  }
}


// Syntax 2
class bar {
  prop = 5;
}


let testBar  = new foo(5);
let testFoo  = new bar();


console.log(testBar.prop);
console.log(testFoo.prop);

除了第二种语法不是动态的(5 现在是硬编码的)之外,它们在第一种语法和第二种语法之间是否有任何区别?第二种语法是在幕后转换为第一种语法还是它们具有不同的特征?

如果我找不到有关此特定主题的任何内容,我们也将不胜感激。

最佳答案

第二个还不是有效的 ES,但有一个建议,以便将来可能会起作用。如果你今天使用像 Babel 这样的转译器来使用它,那么第二个将被转译为第一个,所以是的,它们是相等的。

关于Javascript ES6 类属性赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49983271/

相关文章:

javascript - JS - 通过 switch-case 内的功能进行评估

oop - 在 "real world"中使用单一职责原则

JavaScript ES6 : How to retrieve calling subclass from a static method defined in superclass

python - 似乎无法引用实例变量,获取 "global name ... is not defined"

javascript - 为什么我不能在 ES6 类中使用 let、const 或 var 关键字声明变量,但可以直接声明它?

javascript - 如何更改 Typescript 类的实例中的值?

javascript - masonry 布局需要建议导致重叠 - 绝望

javascript - 给 jQuery 内容 slider 百分比宽度

java - 禁用浏览器中的后退按钮

java - 为什么要在抽象方法前加abstract关键字