• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScript プロトタイプについて)

JavaScriptプロトタイプでのエラーと解決方法

このQ&Aのポイント
  • JavaScriptのプロトタイプに関するエラーについて解説します。
  • エラーメッセージ「TypeError: Cannot set property 'totalPrice' of undefined」が返される原因とは?
  • プロトタイプでメソッドを定義する際のポイントについて詳しく説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

prototypeの意味を誤解していますね。 >TypeError: Cannot set property 'totalPrice' of undefined hamburgerには、prototypeというプロパティが無いのでundefinedが返り、そのundefinedのプロパティに代入しようとしているので失敗します。 案1: hamburger.totalPrice = function(quantity) { return this.price * quantity; } 案2: Menu.prototype.totalPrice = function(quantity) { return this.price * quantity; }

dradra33
質問者

お礼

notnotさま コメントありがとうございます。 「案2」の方を使わせていただきました。 ●コード function Menu(name, price) { this.name = name; this.price = price; } var hamburger = new Menu("ハンバーガー", 100); hamburger.totalPrice = function(quantity) { return this.price * quantity; } var cheeseburger = new Menu("チーズバーガー", 120); Menu.prototype.totalPrice = function(quantity) { return this.price*quantity; } output("太郎は、" + hamburger.name + "を" + hamburger.totalPrice(5) + "円分買いました。"); output("二郎は、" + cheeseburger.name + "を" + cheeseburger.totalPrice(3) + "円分買いました。");