Last active
March 7, 2017 15:50
-
-
Save takedakenoutan/34fc156793ba24d708213bcb8654f73b to your computer and use it in GitHub Desktop.
JavaScriptのプロトタイプについて
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//JavaScriptのプロトタイプについてJavaっぽく説明します | |
//プロトタイプとは | |
//他のオブジェクトとの内部的な繋がりです | |
//概念レベルの話ですね | |
//噛み砕いて言うとロープのようなものです | |
//まぁ、正直ここはどうでもいいです | |
//重要なのはここから | |
//基本的なことは知ってると仮定して話をすすめます | |
//今回説明していくのはnewを使った実用的なコードです | |
//馴染み深い言葉で言えばコンストラクタです | |
//これを使うとJavaのクラスのようなことができちゃいます | |
//オラ、ワクワクすっぞ | |
//では、まず実際にコードを見てもらいます | |
function Cons(n){ | |
this.num = n; | |
} | |
Cons.prototype = { | |
'plus' : function(n){ | |
this.num += n; | |
}, | |
'minus' : function(n){ | |
this.num -= n; | |
}, | |
'set' : function(n){ | |
this.num = n; | |
}, | |
'get' : function(){ | |
return this.num; | |
} | |
} | |
var foo = new Cons(3); | |
foo.plus(6); | |
foo.minus(2); | |
alert(foo.get());// result : 7 | |
var bar = Cons(); | |
alert(bar.get());// result : エラーが発生します | |
//とりあえずこんな感じです | |
//では詳しく説明していきます | |
//最初のCons関数はJavaのクラスだと思っておいてください | |
//そこに書いた処理はnewで初期化された時に実行される処理です | |
//※変数などの定義はthisを使いましょう | |
//そしてそのCons関数(クラス)のプロトタイプにオブジェクトを入れています | |
//この部分がメソッドになります | |
//オブジェクト以外の書き方もありますが完全に個人の自由となっています | |
//もしnew演算子を使わずにCons関数を呼び出した場合 | |
//プロトタイプを継承しないのでメソッドが呼び出せません | |
//JavaScriptはほかの言語と比べても自由度が高い言語です | |
//特にプロトタイプに関してはその自由度の高さを活かすことが出来るでしょう | |
//JavaScriptのプロトタイプはJavaやC++のクラスよりもつよいです | |
//使い所は | |
//オブジェクトごとにそれぞれの値、メソッドを持たせたい場合などに使うことが多いです | |
//他にも様々な使い方があるので試してみてください |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment