【问题标题】:Objects & Prototypes对象和原型
【发布时间】:2016-08-31 05:09:30
【问题描述】:

这是我正在使用的代码。当 newOrder 设置为:

var newOrder = (toppingsTotal + inputtedSize);

但每当我尝试调用原型时,它都会在 JS 控制台中显示它未定义。

我对这种材料还很陌生。请记住这一点。

我正在尝试将浇头和大小相加,并在我的输出中使用原型/对象组合。

感谢任何帮助!

一个有抱负的程序员。

【问题讨论】:

  • 代码截图没用
  • 1) 您的 Pizza 构造函数需要三个参数,但您只传递了一个。 2) 方法名是pizzaPrice,而不是price。 3) 你的Pizza 实例是newOrder 所以你会打电话给newOrder.pizzaPrice()
  • 这个问题看起来很像这个问题:stackoverflow.com/questions/39240070/…。也许这是家庭作业或两个人在解决同一个问题?
  • 代码的屏幕截图将立即被否决,因为它不像代码的实际文本那样有用,格式正确。

标签: javascript jquery object prototype


【解决方案1】:

我认为您的PIZZA 函数需要三个(topping,size,price) 参数,但是您传递的单个参数使得剩余的两个参数(size, price) 未定义。

function Pizza(topping, size, price) {
  this.topping=topping;
  this.size=size;
  this.price=price;
}

为此构造函数传递三个参数。

【讨论】:

    【解决方案2】:

    您的Pizza 构造函数具有三个参数:

    function Pizza(topping, size, price) {
      // ...
    }
    

    ...但是您只传递了一个参数:

    new Pizza(toppingsTotal + inputtedSize);
    

    因此,披萨的this.topping 将是toppingsTotalinputtedSize 的总和,其余的将是undefined

    确保您的参数与您的参数一致,否则您的 Pizza 将无法按预期运行。

    【讨论】:

      【解决方案3】:

      newOrder.price() 替换Pizza.pizzaPrice() 以在调用Pizz.prototype.pizzaPrice() 时引用对象newOrder

      不过,请注意,您还没有将sizeprice 参数传递给var newOrder = new Pizza(toppingsTotal + inputtedSize);你正在调用.price(),其中函数名是pizzaPrice

      在stacksn-ps下面,三个参数传递给new Pizza()newOrder.pizzaPrice()用来调用Pizza.prototype.pizzaPrice

      function Pizza(topping, size, price) {
        this.topping = topping;
        this.size = size;
        this.price = price;
      }
      
      Pizza.prototype.pizzaPrice = function() {
        return this.topping + this.size
      }
      
      var newOrder = new Pizza("cheese", 12, 10.00);
      
      console.log(newOrder.pizzaPrice());

      【讨论】:

      • 我之前试过了,它说它不是 JS 控制台中的功能。
      猜你喜欢
      • 1970-01-01
      • 2018-01-28
      • 2018-09-07
      • 1970-01-01
      • 2020-04-24
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多