Object オブジェクトは、JavaScript の全てのオブジェクトの元となるオブジェクトですが、
JavaScript はオブジェクトに対してプロパティを自由に追加できます。
Object.myData = 20090903;
Object.myFunc = function() {
alert(this.myData);
};
しかし、このプロパティは Object から参照した時に利用できますが、インスタンス化
したオブジェクトからは参照できません
Object.myData = 20090903;
Object.myFunc = function() {
alert(this.myData);
};
obj = new Object();
.
.
.
<INPUT type=button value="実行1" onClick='Object.myFunc();'>
<INPUT type=button value="実行2" onClick='obj.myFunc();'>
※ 実行1は、20090903 が表示される
※ 実行2は、エラー
重要インスタンスからも利用できるようにするには、
prototype プロパティにセットします。
この場合、同じ名前でセットされていた値は、prototype にセットされた内容で上書き
されます( ローディング後に上書きされるようです )
Object.myData = 20090903;
Object.myFunc = function() {
alert(this.myData);
};
Object.prototype.myData = 20091231;
Object.prototype.myFunc = function() {
alert(this.myData+"/prototype");
};
obj = new Object();
.
.
.
<INPUT type=button value="実行1" onClick='Object.myFunc();'>
<INPUT type=button value="実行2" onClick='obj.myFunc();'>
※ 両方とも 20091231/prototype が表示される
さらに、インスタンスにもプロパティを追加できます
Object.myData = 20090903;
Object.myFunc = function() {
alert(this.myData);
};
Object.prototype.myData = 20091231;
Object.prototype.myFunc = function() {
alert(this.myData+"/prototype");
};
obj = new Object();
obj.myFunc2 = function() {
alert(this.myData+"/インスタンス");
};
obj2 = new Object();
この場合、obj のみに追加され事になります( obj2 にmyFunc2 はありません )
重要そして、結果的に、Object.prototype に追加されたものは、他のオブジェクトで
使用できる事になります
String.myFunc();
"abc".myFunc();
x = new String();x.myFunc();
いずれも同じ結果となります