Object.prototype
Object.prototype.foo = function () {alert(this);}
document.foo(); //=> [object HTMLDocument]
alert(document.documentElement.childNodes); //=> [object NodeList]
document.documentElement.childNodes.foo(); //=> Error: (snip).childNodes.foo is not a function. なんでだろう? うーん全部のオブジェクトは Object オブジェクトの仲間(?)なんだよねぇ。 いや、なんで Object.prototype に設定すると他のオブジェクトから呼べるかよくわからないんだけど……プロトタイプ辿ったら Object.prototype にいきつくのかなぁと思いきや document.prototype は undefined だし……
Opera だと [object NodeList] が表示される。Gecko のバグなのかな。
あ、インスタンス化(?)されてるから document.prototype じゃなくて document.constructor.prototype か。それならわかる。いやいやわかんないけど。なんかイメージできない。prototype もオブジェクトであるからコンストラクタがあるはずで、さらには参照している prototype があるかもしれない的? document.constructor.prototype.constructor が [object Object] だからたぶんそれであっているはず……
あぁ。インスタンスってのはやっぱクラスベースに使う用語なんだ……インスタンスとか言い出すと全部インスタンスだよなぁ……
関連エントリー
- Object.prototype にプロパティを追加する副作用 できるだけ追加しないほうがいいねっていう話。なぜなら、単純に連想配列としてオブジェクトを作っても prototype に追加したプロパティが...
- getElementsByTagName on Gecko Gecko の getElementsByTagName がおかしいなぁ。document.getElementsByTagName("*"...
- ECMAScript での var 前に書いた気がするけど、ECMAScript の var は Io の setSlot に似ている。 var foo; と書くと、既存のスコ...
- 理解力のなさ。 ECMAScript におけるオブジェクトは連想配列 (obj.propertyX == obj["propertyX"]) ってのは分かっ...
- 3Dプリンタの Object Cancellation (Klipper + Mainsail) プリント中に一部のオブジェクトだけ反って浮いてきてしまった場合やベッドから外れてしまった場合などに、該当するオブジェクトだけスキップして他の...