2013-12-16 111 views
0

我在這裏有一些代碼不工作。而且即時通訊不知道如何讓它工作,一些幫助將是真棒!JavaScript函數問題

這裏的問題,讓你明白我從哪裏開始的代碼。

問:

使用面向對象設計設計一個類叫做PhoneBill計算和打印時的結算期由電話公司的每一個客戶所欠的平衡。您的PhoneBill班級將接收客戶的當前餘額以及在計費期間以分鐘計的電話呼叫總時間。輸入時間將被驗證,通話費用將以每分鐘25c計算。您的班級將打印輸入餘額,電話通話時間,電話費用和應付費用總額。

a。設計班級表

b。爲表中的每個操作寫一個算法。

c。寫一個測試或驅動算法來測試溶液

function PhoneBill() 
{ 
    this.bal; 
    this.min; 
    this.currCharge; 
    this.Totaldue; 
    this.currCharges=function() 
    { 
     this.currCharge=this.min*.25; 
    } 
    this.Totaldue=function() 
    { 
     this.Totaldue=this.bal+this.currCharge; 
     return (this.Totaldue); 
    } 
    this.bal=function() 
    { 
     return (this.bal); 
    } 
    this.min=function() 
    { 
     return (this.min); 
    } 
} 

me=new PhoneBill(); 
me.balance=eval(prompt("Enter Current Balance: ")); 
me.minutes=eval(prompt("Enter Minutes Used: ")); 

document.write("Current Balance = $"+me.balance+"<p>"); 
document.write("Minutes Used = "+me.minutes+"<p>"); 
document.write("Current Charges = $"+me.currCharges()+"<p>"); 
document.write("New Balance = $"+me.Totaldue()+"<p>"); 

的誤差IM具有:

當運行它,我在電流平衡鍵入用於(10)分鐘(10)

然後它打印:

Current Balance = $10 

Minutes Used = 10 

Current Charges = $undefined 

New Balance = $function() {return (this.bal); } NaN 

什麼世界我做這個代碼得到它的打印?

+0

NITPICK:return不是方法,請放下(和) – epascarello

+0

函數的前四行不做任何操作。如果您希望使用這些名稱創建屬性,則必須指定一個值。然後_don't_將函數分配給相同的屬性... – nnnnnn

+0

爲什麼使用'eval'? –

回答

0

這是因爲您正在使用this.Totaldue來定義函數。在這個函數中,你重新定義它:this.Totaldue=this.bal+this.currCharge;

所以你需要做的是獲得這些函數的返回值,而不是定義。

this.Totaldue=function() 
{ 
    return this.bal()+this.currCharge(); 
} 

但是哈哈,我寫這個。你不能讓bal()en min()返回他們的自我。這沒有意義。 你想要的是屬性this.bal = 'whatever';和ex的函數定義。 this.getBal = function() { return this.bal; }但是因爲您使用的只是獲取者,您只需立即獲得該物業:this.bal。毫無疑問,當你在課堂內部時,你不需要吸氣和吸氣器。