考虑以下代码:
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
将是一个号码,根据需要。这还不错,但并不完美。那么有没有更好的方法呢?