考虑以下代码:
function rectangle(x, y) {
this.width = x;
this.height = y;
this.calcArea = function() {
return (this.width * this.height);
};
}
该rectangle对象有两个属性(宽度和高度)和一个方法(calcArea)。
我希望向矩形对象添加另一个属性:area. 我将通过原型方法做到这一点,如下所示:
rectangle.prototype.area = function () {return this.calcArea();}
现在想象一下,我们创建了一个新的矩形实例:var r = new rectangle(2,3);
不幸的是,area它是一个方法。要检索正确的值,您必须调用r.area();
由于area应该(至少在语义上)是属性而不是方法,有没有办法直接将结果分配给calcArea()属性r.area?
如果我将原型更改为:
rectangle.prototype.area = function () {this.area = this.calcArea();}
我必须打r.area()一次电话,然后所有随后的电话都r.area将是一个号码,根据需要。这还不错,但并不完美。那么有没有更好的方法呢?