Javascript 为什么我的实例属性在类方法中使用时未定义?

Javascript 为什么我的实例属性在类方法中使用时未定义?,javascript,instance-variables,es6-class,Javascript,Instance Variables,Es6 Class,尝试运行cow1.voice()时并且我一直在控制台中收到一个错误 未捕获引用错误:未定义类型 type和其他变量是类的实例变量,因此需要使用this来访问它们。提供给构造函数的初始变量名称,类型,颜色,用于类初始化,在构造函数外部不可用 class Cow { constructor(name, type, color) { this.name = name; this.type = type; this.color = color; }; voice()

尝试运行
cow1.voice()时并且我一直在控制台中收到一个错误

未捕获引用错误:未定义类型


type
和其他变量是类的实例变量,因此需要使用
this
来访问它们。提供给构造函数的初始变量
名称
类型
颜色
,用于类初始化,在构造函数外部不可用

class Cow {
  constructor(name, type, color) {
    this.name = name;
    this.type = type;
    this.color = color;
  };

  voice() {
    // Access instance vars via this
    console.log(`Moooo ${this.name} Moooo ${this.type} Moooooo ${this.color}`);
  };
};


是的,但是当我在控制台中运行cow1.voice()时,我得到的是错误,而不是模板字符串?这是因为变量没有定义,您需要使用
this.type
您能给我发送一个更新的代码片段,以便我能看到我是否出错了吗?我认为说实例变量是不正确的“在构造函数外部不可用“。它们是可用的,但只有在
这个
@RobertStiffler上才可用。非常好的一点是,我把用于初始化的变量和那里的实例变量混在了一起。我已经更新了答案。它在
type
而不是
name
上失败的原因是
name
指的是。(这并不能回答这个问题,但知道它可能仍然有用。)
class Cow {
  constructor(name, type, color) {
    this.name = name;
    this.type = type;
    this.color = color;
  };

  voice() {
    // Access instance vars via this
    console.log(`Moooo ${this.name} Moooo ${this.type} Moooooo ${this.color}`);
  };
};