const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter: () => 2 * Math.PI * this.radius
};
console.log(shape.diameter());
console.log(shape.perimeter());
我知道直径是20,但是为什么周长显示NaN?
这是一个范围问题-半径变量在perimeter方法内不可用,因此未定义。将函数更改为常规方法可以解决此问题。
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter() {
return 2 * Math.PI * this.radius
}
};
console.log(shape.diameter()); //gives 20
console.log(shape.perimeter()); // gives 62.83185307179586
取决于您打算如何使用它,class
可能会更好。在下面的示例中,箭头功能中的this
指向Circle
实例。
class Circle {
constructor(radius) {
this.radius = radius;
}
diameter() {
return this.radius * 2;
}
perimeter = () => 2 * Math.PI * this.radius;
}
const shape = new Circle(10);
console.log(shape.diameter());
console.log(shape.perimeter());
也就是说,如果您使用的是class
,则我更倾向于将diameter
定义为perimeter
作为箭头函数。
您好,未将周长用作函数箭头函数(()=>)
perimeter(){返回2 * Math.PI * this.radius}