意外に簡単! JavaScript でクラスを定義するコード スニペット

August 11, 2015

JavaScript でクラスっぽいものを定義するコードをスニペットの形で置いておきます。

JavaScript Snippet to Define Class

尚、この書き方は 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 なスコープにオブジェクト定義を封じ込めてクラスのように扱っています。書き方は他にも色々あるようです。注意点として、あくまでクラスもどきなので書き方によってプロパティやメソッドのスコープやメモリの使われ方に問題がある点です。他の書き方については、以下の参考サイトをご覧くださいませ。

参考サイト

最後の「Google流」、タイトルはキャッチーでしたが内容は思ったのと ちょっと違う感じでした。それでは また次回。

コメントを残す

メールアドレスが公開されることはありません。