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

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

新規登録して質問してみよう
ただいま回答率
85.50%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

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

Q&A

解決済

1回答

389閲覧

JavaScriptのstaticメソッドについて

nekojiro

総合スコア43

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

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

1グッド

1クリップ

投稿2017/12/06 13:40

編集2017/12/06 14:08

インスタンス変数を参照しないメソッドは、staticメソッドにしたほうがいいのでしょうか。
このサイトだと可読性向上のためにstaticメソッドにしたほうがいいと書いてあります。
ほかのサイトだとstaticはなるべく使わないほういいと書いてあったりしてどうすればいいかわかりません。
言語はJavaScriptとTypeScriptしかわかりません。
参考にしたサイトがJavaなのはjavascriptについて書かれてるサイトが見つけられなかったからです。

staticメソッドを使った場合

javascript

1class Example { 2 constructor(number) { 3 this.number = number; 4 } 5 6 a() { 7 return Example.b(this.number); 8 } 9 10 static b(number) { 11 return number * 2; 12 } 13} 14 15const example = new Example(2); 16console.log(example.a());
staticメソッドを使わなかった場合

javascript

1class Example { 2 constructor(number) { 3 this.number = number; 4 } 5 6 a() { 7 return this.b(this.number); 8 } 9 10 b(number) { 11 return number * 2; 12 } 13} 14 15const example = new Example(2); 16console.log(example.a());

###参考にしたサイト
https://cloudear.jp/blog/?p=1459
https://teratail.com/questions/13203
http://oki2a24.com/2016/01/05/i-do-not-use-static-class-without-any-reason/
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1471135699

umyu👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

提示されたリンクのどれもこれも、「JavaScriptでのstaticメソッド」とは関係ない気がします。JavaとJavaScriptは別言語です

そして、JavaScriptの場合、クラスに入れない関数が作れますので、メソッド内部で使う補助的な関数はクラスに入れない、という選択肢も存在します。staticとして入れるのは、「クラス外部でもその関数を呼び出したい場合」にようやく必要、という印象です。

投稿2017/12/06 14:01

maisumakun

総合スコア145121

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

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

nekojiro

2017/12/06 14:05

staticメソッドについて書いてあるjavascriptのサイトが全くなかったので、代わりにjavaのstaticメソッドについて書いてあるサイトを参考にしました。
maisumakun

2017/12/06 14:11 編集

JavaScriptは「プロトタイプベース」と言って、Java・C++・Rubyなどと大きく異なるオブジェクトシステムを取っています。他言語の状況は「そうなんだ」程度以上の参考にすると、逆に足を取られる危険すらあります。
nekojiro

2017/12/06 14:15

難しいですね。プロトタイプベースの言語なら参考にしても問題ないですか。
maisumakun

2017/12/06 14:19

同じ機能を持った言語でも、言語Aではよく使われる技法だけど、言語Bではできるだけ回避される、というような文化の違いがありますので、JavaScriptの文化はJavaScriptとして知るほかないでしょう。 あと、class構文自体が新参なので使い方がまとまっていない、ということも考えられます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問