考慮下面的代碼:原型時,是否可以將方法的結果分配給屬性?
function rectangle(x, y) {
this.width = x;
this.height = y;
this.calcArea = function() {
return (this.width * this.height);
};
}
rectangle
該對象具有兩個屬性(寬度和高度)和一個方法(油杉)。
我想另一個屬性添加到矩形對象: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
所有後續調用將是一個數字,根據需要。這並不壞,但並不完美。那麼有沒有更好的方法?
東西已經佔到位置:http://stackoverflow.com/questions/812961/javascript-getters-and-setters-for-dummies但你需要忘記IE。 –
爲什麼不加上this.area = x * y;在矩形(x,y)函數中? – alemangui