2011-09-28 45 views
1

我正在學習OO JavaScript(再次)。我已經寫了這個簡單的對象簡單的面向對象的JavaScript示例

function circle(){ 
    this.radius = 4; 
} 

circle.prototype.area = function(){ 
    this.radius * this.radius * 3.14; 
}; 

var c = new circle(); 
c.area(); 

通過c.area()返回的值是undefined。我猜這隻能是因爲this.radius沒有返回4,爲什麼不呢?

+2

使用'Math.PI'而不是3.14。 –

+1

按照慣例,構造函數以大寫字母開頭。默認情況下,它們返回新構造的對象,因此不需要返回語句。 **但是**方法必須有一個返回語句,如果你想讓它們返回一個值。 – RobG

回答

6

radius的值爲4,但area方法沒有返回任何值。

circle.prototype.area = function(){ 
    return this.radius * this.radius * 3.14; 
}; 
+0

我會加上:'if(typeof this.area!='number')this.area = Math.pow(this.radius,2)* Math.PI;返回this.area;'。 – RobG

+0

@RobG我不會。事實上,你可以用'area' member =>'area'覆蓋'area()'方法在開始時可以調用,但不會在第一次調用之後調用。 – duri

+0

@duri謝謝,我一直在使用Groovy的時間太長了(其中return語句是可選的) –