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

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

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

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

Q&A

解決済

2回答

212閲覧

特定の要素に対して処理を行う作業を、1行にしたい

meron-pan

総合スコア44

JavaScript

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

0グッド

0クリップ

投稿2018/05/21 04:33

編集2018/05/21 05:14

前提・実現したいこと

特定の値を探して、その値を持っている関数の中に定義された、別の関数を実行したいのですが、うまくいきません。もちろん、関数が定義されていないからエラーが発生するのですが、以下のソースコードのようにできたはずだった気がします。(一時期独学でやってましたが、今はうろ覚え程度です)

したいこととしては

(a)を内包するオブジェクト.(a)検索用関数.(a)の戻り値で戻っきてた関数が持つ関数();

というようにしたいです。

発生している問題・エラーメッセージ

TypeError: "x" is not a function

該当のソースコード

Javascript

1//ベースのオブジェクト 2function Student(id, name) { 3 this.id = id; 4 this.name = name; 5} 6 7//Studentを複数入れられるオブジェクト 8function Subject(id, name) { 9 this.id = id; 10 this.name = name; 11 this.students = []; 12 this.addStudents = function(s) { 13 this.students.push(s); 14 }; 15} 16 17function main(){ 18 this.search = function(name){ 19 var result = null; 20 ///Subject内を探す処理 21 return result; 22 }; 23} 24 25var m = new main(); 26///このようにしたい 27m.search(name).addStudents(s); 28

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

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

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

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

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

yambejp

2018/05/21 04:53

Subjectはどこで実行したり参照されたりするのでしょうか?
meron-pan

2018/05/21 05:09

Subjectはとりあえず値が入ってるオブジェクトということで、実行しているとこは書きませんでしたが、実態には10くらいをnewで作って値を入れるつもりです。タイミングとしては変数mを定義するすぐ手前か後です。
guest

回答2

0

回答には至らないのですが、追記依頼ではコードがかけないのでこちらに。
見たところおかしな点を発見できませんでした。やりたいと思っていることは提示の方法で基本的に実行できるはずです。

検討のため、↓のように加筆して、google chromeの開発者ツールでテスト実行しましたが、console.dir(check)の出力結果としてmeがhimをもっているのが見えます。
質問に書いていない(取り去った)部分(searchの実装??)にバグがあるものと推測されます。

javascript

1function Student(id, name) { 2 this.id = id; 3 this.name = name; 4} 5 6//Studentを複数入れられるオブジェクト 7function Subject(id, name) { 8 this.id = id; 9 this.name = name; 10 this.students = []; 11 this.addStudents = function(s) { 12 this.students.push(s); 13 }; 14} 15 16function main(){ 17 this.search = function(name){ 18 var result = check; 19 return result; 20 }; 21} 22var m = new main(); 23///このようにしたい 24var check = new Subject("1", "me"); 25var s = new Student("s1", "him"); 26m.search(name).addStudents(s); 27console.dir(check );

投稿2018/05/21 06:52

papinianus

総合スコア12705

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

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

0

自己解決

自己解決しました。
問題は説明を省いたsearch関数の

Javascript

1 var count = this.subjects.length; 2 for(i = 0;i < count; i++){ 3 if(this.subjects[i].id == id){ 4 result = this.subjects[I].name; 5 break; 6 }; 7 };

正しくは、

Javascript

1 var count = this.subjects.length; 2 for(i = 0;i < count; i++){ 3 if(this.subjects[i].id == id){ 4//nameを取り除く 5 result = this.subjects[i]; 6 break; 7 }; 8 };

という具合で失敗していただけでした。お手数おかけしました。

投稿2018/05/21 06:50

meron-pan

総合スコア44

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問