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

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

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

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

Q&A

解決済

5回答

249閲覧

JavaScriptのオブジェクト指向

meron-pan

総合スコア44

JavaScript

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

0グッド

0クリップ

投稿2017/10/31 07:40

編集2017/10/31 08:05

###前提・実現したいこと
クラスというものがどのようなものであるか、はっきりと理解できているわけではないのですが、
function内に大量の処理を記述し、それをインスタンス化?することによって、「値のみの変更で同じ処理を繰り返し行う」を実現したいです。
関数bbb以降は引数はユーザーが入力するようにしたいので
感覚的には、本のページをめくるような感じて、コードを管理したいのです。

###該当のソースコード

JavaScript

1function aaa(){ 2 aaa.1 = function(number){ 3 alert("番号は"+number+"です"); 4 } 5 aaa.2 = function(number) { 6 ・・・処理・・・(処理はaaa.1でもaaa.3でもない) 7 } 8 aaa.3 = function(number) { 9 ・・・処理・・・(処理はaaa.1でもaaa.2でもない) 10 } 11} 12 13//処理が同じなので値だけ変えて処理を行いたい 14//インスタンス化?を行う 15var bbb = new aaa(){ 16 bbb.1(3); 17 bbb.2(5); 18 bbb.3(6); 19 ccc(); 20}; 21 22var ccc = new aaa(){ 23 ccc.1(3); 24 ccc.2(5); 25 ccc.3(6); 26}; 27     ・ 28     ・ 29     ・ 30

###分からないこと
JavaScriptにおいて、このような記述が可能なのか知りたいです。もし、何か違うのであれば上記のことを再現できる方法をご教授ください。

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

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

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

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

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

karamarimo

2017/10/31 07:53

「値のみの変更で同じ処理を繰り返し行う」だけなら function をいくつか作るのではダメなのでしょうか?
meron-pan

2017/10/31 08:11

そうすると大量の記述がある場合、可視性が低下するので階層を設けたいのです。
guest

回答5

0

こういうことでしょうか?

javascript

1function aaa(){ 2 this.func1 = function(number){ 3 console.log("番号は"+number+"です"); 4 } 5 this.func2 = function(number) { 6 console.log("10倍すると"+(number*10)+"です"); 7 } 8} 9var bbb = new aaa(); 10bbb.func1(3); 11bbb.func2(3);

投稿2017/10/31 07:54

yambejp

総合スコア114572

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

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

0

古いブラウザを切り捨てても良いのであれば、ECMAScript6で採用されたclass構文を使えばわかりやすく書けると思います。

JavaScript

1class aaa{ 2 constructor() { 3 //コンストラクタ 4 } 5 method1(n){ 6 alert("aaaから呼び出した番号は"+n+"です"); 7 } 8 method2(n){ 9 alert("aaaから呼び出した番号は"+n+"です"); 10 } 11} 12 13class ccc extends aaa{ 14 constructor() { 15 super(); // 親クラスの同名メソッドを呼び出す 16 } 17 method1(n){ 18 alert("cccから呼び出した番号は"+n+"です"); 19 } 20} 21 22var a = new aaa(); 23a.method1(10); 24var c = new ccc(); 25c.method1(20); 26c.method2(30);

投稿2017/10/31 08:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ECMAScript6ではclassを使用可能になります。

クラス - JavaScript | MDN

投稿2017/10/31 08:05

tkturbo

総合スコア5572

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

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

0

インスタンス化すれば下記のようになるかと思いますが、

JavaScript

1 function aaa(){ 2 this.notify = function(number){ 3 alert("番号は"+number+"です"); 4 } 5 } 6 7 var bbb = new aaa() 8 9 bbb.notify(3); 10 bbb.notify(5); 11 bbb.notify(6); 12 13

この程度であればクラスやインスタンスを無理に使わないほうがシンプルだと思いますね。

JavaScript

1function aaa(number){ 2 alert("番号は"+number+"です"); 3} 4 5aaa(3); 6aaa(5); 7aaa(6);

どうしてもインスタンス化したいとか、実際のコードはもっとオブジェクト指向的に書くのが良さそうだとか、そういった事情があれば返信に記載下さい。

投稿2017/10/31 08:00

akabee

総合スコア1947

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

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

0

自己解決

さまざまな方々に回答いただき誠にありがとうございます。自らの質問に全文書き換えるような大きなミスがあったのに気づいたのでここで質問を終わらせていただきます。申し訳有りません。

投稿2017/10/31 08:25

meron-pan

総合スコア44

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問