我是javascript的新手,我对poo存有疑问,并且如果您能帮助我,我有一个问题,无法实现cercle的许可 谢谢
class cercle {
constructor(rayon) {
this.rayon = rayon;
}
get area() {
return this.calcArea();
}
calcArea() {
return Math.PI * this.rayon * this.rayon;
}
get perim() {
return this.calcperim();
}
get calcperim() {
return 2 * Math.PI * this.rayon;
}
}
const cerc = new cercle(10);
console.log(cercle.area);
console.log(cercle.perim);
答案 0 :(得分:1)
您的代码似乎还可以,但是您错过了对象cerc
至cercle
的情况。另外,如果要使用吸气剂get
作为吸气剂,请从方法calcperim()
中删除吸气剂this.calcperim;
或不加括号(get
)来调用它。
getter
语法将对象属性绑定到一个在查找该属性时将被调用的函数。
根据MDN documentation。
有时,希望允许访问返回动态计算值的属性,或者您可能希望反映内部变量的状态而无需使用显式方法调用。在JavaScript中,这可以通过使用
getter
来完成。尽管可以同时使用getter
和setter来创建一种伪伪类型,但无法同时将class circle { constructor(rayon) { this.rayon = rayon; } get area() { return this.calcArea(); } calcArea() { return Math.PI * this.rayon * this.rayon; } get perim() { return this.calcperim(); } calcperim() { return 2 * Math.PI * this.rayon; } } const cerc = new circle(10); console.log(cerc.area); console.log(cerc.perim);
绑定到一个属性并使该属性实际持有一个值。属性。
main {
max-width: 800px;
padding: 40px;
border: 1px solid rgba(0,0,0,.2);
background: #fff;
box-shadow: 0 1px 3px rgba(0,0,0,.1);
}
.main-tab section {
display: none;
padding: 20px 0 0;
border-top: 1px solid #abc;
}
.main-tab input {
display: none;
}
.main-tab label {
display: inline-block;
margin: 0 0 -1px;
padding: 15px 25px;
font-weight: 600;
text-align: center;
color: #abc;
border: 1px solid transparent;
}
.main-tab label:before {
font-weight: normal;
margin-right: 10px;
}
.main-tab label:hover {
color: #789;
cursor: pointer;
}
.main-tab input:checked + label {
color: #0af;
border: 1px solid #abc;
border-top: 2px solid #0af;
border-bottom: 1px solid #fff;
}
#tab1:checked ~ #content1,
#tab2:checked ~ #content2 {
display: block;
}
答案 1 :(得分:0)
变量名cerc
使用不正确,函数声明calcperim
不正确。这是工作代码:
class cercle {
constructor(rayon) {
this.rayon = rayon;
}
get area() {
return this.calcArea();
}
calcArea() {
return Math.PI * this.rayon * this.rayon;
}
get perim() {
return this.calcperim();
}
calcperim() {
return 2 * Math.PI * this.rayon;
}
}
const cerc = new cercle(10);
console.log(cerc.area);
console.log(cerc.perim);
答案 2 :(得分:-1)
您的问题是“ this”关键字引用了窗口对象。
答案 3 :(得分:-1)
尝试
class cercle {
constructor(rayon) {
this.rayon = rayon;
}
get area() {
return this.calcArea();
}
calcArea() {
return Math.PI * this.rayon * this.rayon;
}
get perim() {
return this.calcperim();
}
calcperim() {
return 2 * Math.PI * this.rayon;
}
}
const cerc = new cercle(10);
console.log(cerc.area);
console.log(cerc.perim);