【发布时间】:2016-08-31 02:59:50
【问题描述】:
对于我的类,我需要创建一个构造函数、对象和原型。不幸的是,我无法让原型工作,并且想知道是否有人可以帮助我了解如何制作原型以正确计算我的披萨对象的价格。在我不得不添加一个对象和原型之前,它工作得很好,但是为了满足分配指南,我被要求回去制作一个原型,这让我非常困惑。任何帮助将不胜感激。
//business logic
function Pizza(size, sauce, cheese, meat1, meat2, veggie1, veggie2) {
this.size = size;
this.sauce = sauce;
this.cheese = cheese;
this.meat1 = meat1;
this.meat2 = meat2;
this.veggie1 = veggie1;
this.veggie2 = veggie2;
}
Pizza.prototype.pizzaPrice = function() {
return pizzaPrice = inputtedSize + inputtedSauce + inputtedCheese + inputtedMeatOne + inputtedMeattwo + inputtedVeggieOne + inputtedVeggieTwo + 0;
}
//user interface logic
$(document).ready(function(){
$("form").submit(function(event) {
event.preventDefault();
$("form").fadeOut();
var inputtedSize = parseInt($("#size").val());
var inputtedSauce = parseInt($("#sauce").val());
var inputtedCheese = parseInt($("#cheese").val());
var inputtedMeatOne = parseInt($("#meat1").val());
var inputtedMeattwo = parseInt($("#meat2").val());
var inputtedVeggieOne = parseInt($("#veggie1").val());
var inputtedVeggieTwo = parseInt($("#veggie2").val());
var sizeChoice = $( "#size option:selected" ).text();
var sauceChoice = $( "#sauce option:selected" ).text();
var cheeseChoice = $( "#cheese option:selected" ).text();
var meatChoiceOne = $( "#meat1 option:selected" ).text();
var meatChoiceTwo = $( "#meat2 option:selected" ).text();
var veggieChoiceOne = $( "#veggie1 option:selected" ).text();
var veggieChoiceTwo = $( "#veggie2 option:selected" ).text();
var pizza = Pizza();
var newPizza = (inputtedSize + inputtedSauce + inputtedCheese + inputtedMeatOne + inputtedMeattwo + inputtedVeggieOne + inputtedVeggieTwo);
Pizza.pizzaPrice(newPizza);
$("#total").fadeIn();
$(".total").text(" " + "$" + newPizza);
$(".size").text(" " + sizeChoice);
$(".sauce").text(" " + sauceChoice);
$(".cheese").text(" " + cheeseChoice);
$(".meat1").text(" " + meatChoiceOne);
$(".meat2").text(" " + meatChoiceTwo);
$(".veggie1").text(" " + veggieChoiceOne);
$(".veggie2").text(" " + veggieChoiceTwo);
});
});
【问题讨论】:
-
不幸的是,这段代码有很多问题。首先,您使用
new Pizza(...)而不是Pizza(...)创建一个新的Pizza 对象。然后,您尝试在一个范围内使用像inputtedSize这样的变量,这些变量在另一个范围内声明。你不能那样做。然后,您不会将参数传递给new Pizza()。我建议您首先在调试控制台中查看报告的错误,然后一次解决一个,直到没有更多错误为止。所有初学者都应该做的一件事是学习如何查看调试控制台中的内容。 -
也许您遇到了“缩进不足”的异常。
-
在实际的 html 中缩进很好,间距是关闭的,因为我不得不在这里笨拙地缩进代码才能正确显示
-
@AddisonNishijima 在 SO 上有数十万条带有适当缩进的帖子,代码显示得很好。请重新阅读代码格式化指南。无论如何,我建议回去重新阅读一些关于编写构造函数和原型方法以及实例化对象以及从方法中引用它们的属性的基本教程。
标签: javascript object constructor prototype