ECMAScript 2015类中不允许使用哪些代码?

时间:2018-03-27 00:03:20

标签: javascript class syntax

  

在ECMAScript 2015中引入的JavaScript classes主要是基于JavaScript的现有基于原型的继承的语法糖

允许在ECMAScript 2015类{}括号中使用哪种代码 NOT ?私有变量,常量和函数可以在class括号内声明吗?

e.g。

class Person{
  constructor(n){ this.name = n;}  
  const HELLO = 'Hello!';  //is this allowed?
  saySomething (m){ console.log(this.name + ' says ' + (m || HELLO)) }
}

1 个答案:

答案 0 :(得分:1)

根据this article,基本类语法如下所示:

class MyClass {
  constructor(...) {
    // ...
  }
  method1(...) {}
  method2(...) {}
  get something(...) {}
  set something(...) {}
  static staticMethod(..) {}
  // ...
}

提供的示例代码会在Chrome上引发Uncaught SyntaxError: Unexpected identifier错误;私有constvarclass声明中不允许。一种替代方法是使用IIFE(立即调用函数表达式):

Person = (function(){

    const HELLO = 'Hello!';

    class Person{
      constructor(n){ this.name = n;}    
      saySomething (m){ console.log(this.name + ' says ' + (m || HELLO)) 
    }

    return Person;
})();

有关详细信息,请参阅ECMAScript 2015 classes规范。