2015-06-24 70 views
0

我想創建這個簡單的Toaster函數,它將創建一個新的烤麪包機並返回一個類型的對象以及它是如何烹飪的。一個非常簡單的練習,除非我得到'Uncaught ReferenceError:typeOfFood未定義'錯誤。我正在嘗試傳遞typeOfFood作爲參數。下面是代碼:javascript更靠近並返回對象

var Toaster = function(){ 
function cook(type,temp){ 
    var food = type; 
    var amtCooked; 
    if(temp >7){ 
    amtCooked = "Well Done!" 
    }else if(temp > 4){ 
    amtCooked = "Medium"; 
    }else{ 
    amtCooked = "Lightly done!"; 
    } 
    this[food] =food + amtCooked; 
} 
return{ 
toast: function(typeOfFood,setting){ 
     cook(typeOfFood,setting) 
     } 
    }; 
} 
+0

內部函數'cook'被稱爲參數爲'typeOfFood,settings',但它們沒有在外部函數的作用域('toast')中定義,並且它們不作爲參數傳遞給它 –

+0

是的,這是我的一個忽略,我忘了添加這些,但是我擁有它在那裏之前,但嘗試的東西時刪除它。我試圖讓它設置一個新的屬性作爲typeOfFood與設置值。 – codemonkey

回答

1

這樣做:

var Toaster = function(){ 
function cook(type,temp){ 
    var food = type; 
    var amtCooked; 
    if(temp >7){ 
    amtCooked = "Well Done!" 
    }else if(temp > 4){ 
    amtCooked = "Medium"; 
    }else{ 
    amtCooked = "Lightly done!"; 
    } 
    this[food] =food + amtCooked; 
} 
return{ 
toast: function(typeOfFood,setting){ 
     cook(typeOfFood,setting) 
     } 
    }; 
} 

原因:您正在返回的功能敬酒,所以當你創建一個對象,然後調用敬酒你需要在這裏發出的參數和需要以接收功能toast

要撥打:

var v = new Toaster(); 
v.toast("bread",4) 

沒有錯誤現在

如果你不想放棄在敬酒功能paramenters然後,你可以使用toast功能arguments對象做到這一點的方法:

var Toaster = function(){ 
    function cook(type,temp){ 
     var food = type; 
     var amtCooked; 
     if(temp >7){ 
     amtCooked = "Well Done!" 
     }else if(temp > 4){ 
     amtCooked = "Medium"; 
     }else{ 
     amtCooked = "Lightly done!"; 
     } 
     this[food] =food + amtCooked; 
    } 
    return{ 
    toast: function(){ 
      cook(arguments[0],arguments[1]) 
      } 
     }; 
    } 
+0

我怎樣才能得到它作爲'typeOfFood'參數設置對象的屬性?它似乎沒有工作。 – codemonkey

+0

我想讓它設置一個新的屬性作爲typeOfFood與設置的值。 – codemonkey

+0

你想要一個屬性爲typeOfFood和amdCooked的對象。或者你想要一個使用typeOfFood和amdCooked作爲兩個條目的數組,或者你想要一個帶有連接消息的字符串? –