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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

4回答

210閲覧

JavaScriptでのクラスの扱いについて

.Won

総合スコア66

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2018/06/25 15:17

編集2018/06/27 15:44

JavaScript

1class Genom{ 2 constructor(genomList,evaluation){ 3 this.genomList = genomList; 4 this.evaluation = evaluation; 5 } 6 7 get getGenom(){ 8 return this.genomList; 9 } 10 get getEvaluation(){ 11 return this.evaluation; 12 } 13 set setGenom(genomList){ 14 this.genomList = genomList; 15 } 16 set setEvaluation(evaluation){ 17 this.evaluation = evaluation; 18 } 19}

JavaScript

1for(i = 0;i < MAX_GENOM_LIST;i++){ 2 group[i].setEvaluation(1); 3}

私は現在JavaScriptで遺伝的アルゴリズムのプログラムを制作しています。
上のように定義されたクラスのメソッドを呼び出したいのですが、
setEvaluation is not a function と出てしまいます。
何を間違えているのでしょうか?

作成しているプログラムのURL
https://public-darjeeling.github.io/GenerationAlgorithm.html
参考にしたサイト
https://qiita.com/Azunyan1111/items/975c67129d99de33dc21

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

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

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

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

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

guest

回答4

0

JavaScript

1 set setEvaluation(evaluation){ 2 this.evaluation = evaluation; 3 }

関数ではなくget/setプロパティで定義しているので、関数呼び出しではなく以下のように記述してください。

JavaScript

1for(i = 0;i < MAX_GENOM_LIST;i++){ 2 group[i].setEvaluation = 1; 3}

あとMAX_GENOM_LISTを使用せずとも、group.lengthが使えると思います。

JavaScript

1for(let i = 0;i < group.length;i++){ 2 group[i].setEvaluation = 1; 3}

もしくforeachを使った以下のようなコードでも

JavaScript

1group.forEach((element) => { 2 element.setEvaluation = 1; 3});

◇参考情報
set 構文

投稿2018/06/26 02:41

編集2018/06/26 02:43
umyu

総合スコア5846

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

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

0

setEvaluation is not a function

setEvaluation は関数ではない、といってますが、心当たりはないでしょうか

投稿2018/06/25 15:27

y_waiwai

総合スコア87774

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

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

0

呼び出す側のスクリプトが一部しか記述していませんが、単純に「group」配列に「Genom」オブジェクトが入っていないという可能性はないでしょうか?

投稿2018/06/26 01:38

unorigino

総合スコア128

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

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

.Won

2018/06/26 03:22

groupにはnew Genomで作られたものをしまっている筈ですが、確認する事は出来ますか? instance of 的な事はできるのでしょうか?
unorigino

2018/06/26 04:05

Google chrome 等モダンブラウザであれば、開発者ツールが用意されてるはずです。任意のタイミングでconsole.log(group[i])など出力してみてはいかがでしょうか。 ChromeならF12キーでポップアップします。
guest

0

getset は関数というよりはプロパティ的な扱われ方な気がします。
なのでgetter名もgetGenomListではなくgenomListにして、getGenomListは関数として定義すると、同じようなことができるかと思います。
以下、例で書いて見ました。

JavaScript

1class Genom{ 2 constructor(genomList, evaluation){ 3 this.genomList = genomList 4 this.evaluation = evaluation 5 } 6 get genomList() { 7 return this._genomList 8 } 9 set genomList(genomList) { 10 return this._genomList = genomList 11 } 12 setGenomList(genomList) { 13 this._genomList = genomList 14 } 15} 16var genom = new Genom([], 1) 17genom.setGenomList([1, 2]) 18console.log(genom.genomList) 19

投稿2018/06/25 16:12

kthatoto

総合スコア49

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問