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}`);
};
};