ちょっと一息

ちょっと一息

主に自分の学んだこと、使えそうなことをまとめてます

JavaScriptのオブジェクト(プロトタイプ)

初投稿!

一発目の題材にふさわしい気もしませんが、以前学んだJavaScriptのオブジェクトについて忘れているのでまとめてみました。(とりあえず基本だけ)

JavaScriptにおけるオブジェクト指向

プロトタイプベースのオブジェクト指向??

JavaScriptオブジェクト指向言語だが「プロトタイプ」という概念だけがあり、これを使ってオブジェクトを作成していく感じ。
RubyとかPHPとかだとclass hoge っとか書いてオブジェクトを作成するけど、この辺がちょっと違う。

プロトタイプとは要は「より縛りの弱いクラスのようなもの」と思っておいてください。

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用までより引用

って書いてあるので、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を書きます!