我试图使用两种方法创建吸气剂 -工厂功能
function CreateCircle(radius) {
return {
radius,
get area() {
return this.radius * 20;
}
}
}
-和构造函数
function ConstructorFunctionCircle(radius) {
this.radius = radius;
this.area = () => this.radius * 20;
}
然后创建对象,然后在控制台中记录该区域:
const constructorFunctionCircle = new ConstructorFunctionCircle(20);
const factoryFunctionCircle = CreateCircle(20);
console.log(`factoryFunctionCircle ${factoryFunctionCircle.area}`);
console.log(`constructorFunctionCircle ${constructorFunctionCircle.area}`);
结果是:
factoryFunctionCircle 400
constructorFunctionCircle () => this.radius * 20
因此,我知道在使用构造函数的情况下,应使用()调用方法。
然后如何使用构造函数创建getter属性?
答案 0 :(得分:2)
要使用真正的构造函数 ,您必须使用defineProperty
:
function ConstructorFunctionCircle(radius) {
this.radius = radius;
Object.defineProperty(this, "area", {
get: function() {
return radius * 20;
}
});
}
但是我更喜欢上课:
class Circle {
constructor(radius) {
this.radius = radius;
}
get area() {
return 2 * Math.PI * this.radius ** 2;
}
}
答案 1 :(得分:1)
您可以这样定义另一个函数(在这种情况下为lambda):
this.calculateArea = () => this.radius * 20;
然后拥有您的原始属性,只需调用该函数即可:
this.area = this.calculateArea();
但是绝对可以选择上课。