JavaScript でクラスっぽいものを定義するコードをスニペットの形で置いておきます。
尚、この書き方は JavaScript におけるクラス定義の完璧な方法ではなく、筆者が好きというだけなので その点はご了承ください。
JavaScript でクラスを定義するコード スニペット
var MyClass = (function(){ var const = 'CONSTANT'; // クラス変数 すべてのインスタンスで共通 // Constructor var constructor = function( number ){ this.prop1 = ''; this.prop2 = new Array(); this.prop3 = 0; this.prop4 = number; }; // Methods constructor.prototype = { update: function(){ this.prop3 = this.prop2.length; this.prop1 = this.prop2.join(','); }, add: function( id ){ this.prop2.push(id); this.update(); }, del: function(){ var id = this.prop2.pop(); this.update(); return id; }, getNumber: function(){ return this.prop4; }, getArray: function(){ return this.prop2; }, isAdded: function( id ){ return (this.prop1.indexOf(id) !== -1); } } return constructor; })(); var class1 = new MyClass( 1 ); var class2 = new MyClass( 2 );
JavaScript の即時関数を使って Private なスコープにオブジェクト定義を封じ込めてクラスのように扱っています。書き方は他にも色々あるようです。注意点として、あくまでクラスもどきなので書き方によってプロパティやメソッドのスコープやメモリの使われ方に問題がある点です。他の書き方については、以下の参考サイトをご覧くださいませ。
参考サイト
- What techniques can be used to define a class in JavaScript, and what are their trade-offs? – Stack Overflow
- 無名関数をすぐに実行する(function(){})()の覚え書き [JavaScript] : ずっと工事中
- 【JavaScript】デザインパターンを知ってみる。モジュール・パターン編 | バシャログ。
- JavaScript のクラス定義(tomoyamkung のブログ)
- 【javascript】やさしいクラスの作り方 – Qiita
- JavaScriptでクラスを実現する方法(so-zou.jp)
- Google流 JavaScript におけるクラス定義の実現方法(www.yunabe.jp)
最後の「Google流」、タイトルはキャッチーでしたが内容は思ったのと ちょっと違う感じでした。それでは また次回。