Javascriptのprototypeに関する覚書 : JavaScript

Pocket

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.

コメントの投稿

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