我刚刚学习JavaScript,并且对编码还很陌生。我正在学习属性和字段,由于某种原因,如果我的课程包含字段,Firefox将无法运行。
有些代码会在标题中出现错误。
class Animal {
_paws = true;
get paws() {
return _paws;
}
}
let cat = new Animal();
console.log(cat.paws);
答案 0 :(得分:1)
首先,您的代码中有错误。它应该是this._paws
语句中的return
。
class Animal {
_paws = true;
get paws() {
return this._paws; // Correct here.
}
}
let cat = new Animal();
console.log(cat.paws);
关于浏览器的兼容性,如果您选中Public class fields - Chrome Platform Status,则可以清楚地看到Firefox仍在开发中。
来自Field declarations ...
公共和私有字段声明是JavaScript标准委员会experimental feature (stage 3)提出的TC39。浏览器中的支持是有限的,但是可以通过Babel之类的系统通过构建步骤来使用该功能。
答案 1 :(得分:0)
发现我犯了一个愚蠢的错误
class Animal {
constructor() {
this._paws = true;
}
get paws() {
return this._paws;
}
}
let cat = new Animal();
console.log(cat.paws);
完全忘记了构造函数和这个关键字。
答案 2 :(得分:0)
只需执行此操作即可快速修复:
class Animal {
// _paws = true; Remove this line.
// Initialize your private fields in constructor instead
constructor() {
this._paws;
}
get paws() {
return this._paws; // Must use this._fieldName to reference
}
}
let cat = new Animal();
console.log(cat.paws);
请注意,除 Google Chrome 之外的大多数浏览器上的私有字段仍处于实验阶段。