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] だからたぶんそれであっているはず……
あぁ。インスタンスってのはやっぱクラスベースに使う用語なんだ……インスタンスとか言い出すと全部インスタンスだよなぁ……