JavaScriptのオブジェクト(プロトタイプ)
初投稿!
一発目の題材にふさわしい気もしませんが、以前学んだJavaScriptのオブジェクトについて忘れているのでまとめてみました。(とりあえず基本だけ)
JavaScriptにおけるオブジェクト指向
プロトタイプベースのオブジェクト指向??
JavaScriptはオブジェクト指向言語だが「プロトタイプ」という概念だけがあり、これを使ってオブジェクトを作成していく感じ。
RubyとかPHPとかだとclass hoge っとか書いてオブジェクトを作成するけど、この辺がちょっと違う。
プロトタイプとは要は「より縛りの弱いクラスのようなもの」と思っておいてください。
って書いてあるので、JavaScriptでのオブジェクトは作り方がちょっと違うんだなぐらいで良さそう。
クラス定義とインスタンス化
ここから記事のメイン。とりあえずクラスの定義とインスタンス化はどうしたらいいかというと以下の感じ。
var Person = function() {}; var person = new Person();
何もないクラスだけど、ひとまずPersonがクラスで、personはそのインスタンス。
JavaScriptのクラスは関数リテラルの代入する感じっぽい。
コンストラクタ
インスタンスを生成するときの初期化処理を書くと以下の感じになる。
var Person = function(name, sex) { this.name = name; this.sex = sex; this.getName = function() { return this.name; } this.getSex = function() { return this.sex; } }; var taro = new Person("田中太郎", '男'); console.log(taro.getName()); // 田中太郎
ポイントはthisを使って変数を指定してプロパティを設定している点だと思う。
まとめ
JavaScriptでオブジェクトを作りたい場合は基本的に関数リテラルの代入でよい。
今回は単純な基本だけになったけど、より詳細のprototypeプロパティとか、継承とかもまとめたいので、近々その2を書きます!