JavaScriptのインスタンス生成のメモ。
コンストラクタから生成したオブジェクトをインスタンスと呼ぶ。
function Foo() { // } var ins1 = new Foo(); // コンストラクタからインスタンス生成。 var ins2 = { // }; // オブジェクトリテラル{}はnew Object()のショートカット
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
『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
『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.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。