2015-06-24 34 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作为两个条目的数组,或者你想要一个带有连接消息的字符串? –