インスタンス生成 : JavaScript

Pocket

JavaScriptのインスタンス生成のメモ。

オブジェクトとインスタンス

コンストラクタから生成したオブジェクトをインスタンスと呼ぶ。

function Foo() {
    //
}
var ins1 = new Foo();		// コンストラクタからインスタンス生成。
var ins2 = { 
    // 
};		                // オブジェクトリテラル{}はnew Object()のショートカット

インスタンス生成

new演算子

function Foo(value) {
    this.value = value;
};
var ins1 = new Foo("instance1");
var ins2 = new Foo("instance2");
ins1.value; // instance1
ins2.value; // instance2
ins1.value = "hoge";
ins2.value = "bar";
ins1.value; // hoge
ins2.value; // bar

Objectオブジェクトのcreateメソッド

『JavaScript:The Cood Parts』で紹介しているcreateメソッドをObjectオブジェクトに追加してnew演算子を隠匿する方法。


if (typeof Object.create !== 'function') {
	Object.create = function(o) {
		var F = function () { };
		F.prototype = o;
		return new F();
	};
}
var ins1 = { value: "instance1"};
var ins2 = Object.create(ins1);
ins2.value = "instance2";
ins1.value; // instance1
ins2.value; // instance2

Douglas Crockford著, 水野 貴明訳 2008 『JavaScript:The Cood Parts』 オライリージャパン

» インスタンスから別のインスタンスを生成する方法 : JavaScript

new演算子を使わない方法

『JavaScript: The Good Parts』 はnew演算子を使わない方法も紹介している。

var o = function (value) { 
	var that = {};
	that.value = value;
	return that; 
} 

var ins1 = o("instance1"); 
var ins2 = o("instance2");

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。