質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1300閲覧

JavaScript: is not a functionエラーの解消方法

hiro_ike

総合スコア48

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/05/18 13:20

初心者です。
下記コードは、演習の指示をもとに書いたものです。
長文すみません。最終行の「Yumi.exercise(2)」が「is not a function」というエラーが出ます。
同じ関数を別の行でも使っており、そちらはエラーになりません。
初心者なため原因が分かりません。。ご指摘いただけますと幸いです。

JavaScript

1class Usagi { 2 constructor(name) { // 名前はパラメータ 3 this.owner = ''; 4 this.name = name; 5 this.price = 15; 6 } 7 wheelRun() { 8 console.log('キュウ キュウ'); 9 } 10 eatFood() { 11 console.log('カジ カジ'); 12 } 13 getPrice() { 14 return this.price; 15 } 16} 17const Koo = new Usagi('Koo'); // <=== Kooは、引数 18const somevar = 'somevalue'; 19 20class Person { 21 constructor(age = 0, height = 0, weight = 0, mood = 0, bankAccount = 0) 22 // age, height, weight, mood, bankaccountの初期値はゼロ 23 { // name はパラメータ 24 this.name = name; 25 this.age = age; 26 this.height = height; 27 this.weight = weight; 28 this.mood = mood; 29 this.usagitachi = []; 30 this.bankAccount = bankAccount; 31 } 32 33 getName() { 34 return this.name; 35 } 36 getAge() { 37 return this.age; 38 } 39 getWeight() { 40 return this.weight; 41 } 42 greet() { 43 console.log(`${this.name}`) 44 } 45 eat(num) { 46 for (let i = 0; i < num; i++) { 47 this.weight++; 48 this.mood++; 49 } 50 } 51 exercise(num) { 52 for (let i = 0; i < num; i++) { 53 this.exercise--; 54 } 55 } 56 ageUp(num) { 57 for (let i = 0; i < num; i++) { 58 this.age++; 59 this.height++; 60 this.weight++; 61 this.mood--; 62 this.bankAccount += 10; 63 } 64 } 65 buyUsagi(usagi) { 66 //usagi配列にオブジェクトを追加し、気分は10ごとにインクリメント、usagiの価値ごとに銀行口座をディクリメント(getPrice()を使用) 67 this.Usagi.push(usagi); 68 this.mood += 10; 69 this.bankAccount -= usagi.getPrice(); 70 } 71}; 72// 1.Yumiという名の新しいPersonのインスタンスを作成する。 73const Yumi = new Person('Yumi'); 74 75// 2. Yumi に5才追加する 76Yumi.ageUp(5); 77 78// 3. Yumiに5回食事を与える 79Yumi.eat(5); 80 81// 4. Yumiに5回運動をさせる 82Yumi.exercise(5) 83 84// 5. Yumiに9才追加する 85Yumi.ageUp(9) 86 87// 6. "Koo"というウサギを作成する 88//const Koo = new Usagi('Koo'); 89 90// 7. Kooのオーナーをstringで "Yumi"とします 91Koo.owner = "Yumi"; 92 93// 8. Yumi が Kooを購入する 94Yumi.buyUsagi(Koo); 95 96// 9. Yumi に15才追加する 97Yumi.ageUp(15); 98 99// 10. Yumi に食事を2回させる 100Yumi.eat(2); 101 102// 11. Yumi に運動を2回させる 103Yumi.exercise(2);```

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

関数 exercise(num) の中で this.exercise-- しているため、exercise が関数から数値(のようなもの)に化けてます。

Personコンストラクタで this.exercise の設定もないし、本当は別の変数を減らしたかったのではないでしょうか。this.weightとか。

投稿2021/05/18 13:52

編集2021/05/18 13:55
int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro_ike

2021/05/18 14:06

なるほど!!間違えてますね。 this.weightですね。 ありがとうございます!
guest

0

is not a function

それそのまま、それは関数ではない、とおっしゃってます。
それって何かを確かめてみては

投稿2021/05/18 13:37

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問