prototypeプロパティは関数オブジェクトを拡張する手段である。インスタンスはprototypeプロパティを持たない。
/* * コンストラクタ */ var SomeObject = function () { }; SomeObject .prototype.foo = 'bar'; var ins = new SomeObject (); // ins.prototype.hoge = 'piyo'; ← prototypeプロパティはインスタンスを拡張できないのでエラー
prototypeプロパティに設定したデータは設定したオブジェクトから生成されるすべてのインスタンスで利用することができる。
一方インスタンスに設定したプロパティはそのインスタンスのみで利用できる。
/*
* コンストラクタ
*/
var SomeClass = function () {}
var ins1 = new SomeClass();
var ins2 = new SomeClass();
ins1.foo = ‘インスタンス1’;
alert(ins2.name); ← エラー
SomeClass.prototype.title = ‘プロトタイプテスト’;
alert(ins1.title); // 正常
alert(ins2.title); // 正常
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。