Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类声明问题_Javascript_Ecmascript 6_Es6 Class - Fatal编程技术网

Javascript 类声明问题

Javascript 类声明问题,javascript,ecmascript-6,es6-class,Javascript,Ecmascript 6,Es6 Class,因此,我一直在自学新的ES6语法,并编写了一个小示例来实践新功能。现在,我遇到了一个非常奇怪的错误,来自以下代码: class bird { var actions = ["run","jump","fly", "chirp"]; let actionValue = 11; preformActions(){ actions.map((action) => { console.log(action); }); } } let birdy

因此,我一直在自学新的ES6语法,并编写了一个小示例来实践新功能。现在,我遇到了一个非常奇怪的错误,来自以下代码:

class bird { 
  var actions = ["run","jump","fly", "chirp"]; 
  let actionValue = 11;
  preformActions(){
    actions.map((action) => {
      console.log(action);  
    });
  }
}
let birdy = new bird();
birdy.preformActions();
问题是,在类的语句块的第一行,jslint给了我一个错误,声明“意外令牌”


我宣布这一点的方式有问题吗?这似乎是一个很容易解决的问题,但我缺少什么呢?

我认为您需要在构造函数中初始化实例属性。
class
主体不能包含
var
let
声明

class Bird { 
  constructor() {
    this.actions = ["run","jump","fly", "chirp"]; 
    this.actionValue = 11;
  }
  performActions(){
    for (const action of this.actions)
      console.log(action);
  }
}
let birdy = new Bird();
birdy.performActions();

当然,在这些方法中,您可以使用local
let
/
const
/
var
等变量。

我认为您需要在构造函数中初始化实例属性。
class
主体不能包含
var
let
声明

class Bird { 
  constructor() {
    this.actions = ["run","jump","fly", "chirp"]; 
    this.actionValue = 11;
  }
  performActions(){
    for (const action of this.actions)
      console.log(action);
  }
}
let birdy = new Bird();
birdy.performActions();

当然,在这些方法中,可以使用局部
let
/
const
/
var
等变量。

不定义
函数。删除
var
let
。是的,您声明的方式存在问题。类的主体不是语句列表,因此
var
let
不属于它们。您可以拥有函数,如performActions(),以及访问器,如
get foo(){return bar;}
,并且应该有一个构造函数…;-)<代码>类
不定义
函数
。删除
var
let
。是的,您声明的方式存在问题。类的主体不是语句列表,因此
var
let
不属于它们。您可以拥有函数,如performActions(),以及访问器,如
get foo(){return bar;}
,并且应该有一个构造函数…;-)