これ不思議じゃないですか?
var navi = navigator; document.write( navi.constructor + "<br>" ); // prints "[object Navigator]" var agent = navigator.userAgent; document.write( agent.constructor ); // prints "function String() { [native code] }"
なんで二つとも constructor プロパティを出力させてんのに,表示違うの?オブジェクトの constructor プロパティって普通 Function クラスのオブジェクトじゃないの???????だったら普通出力フォーマット同じになるはずだろ! とか思ったわけさ.
さっき学んだ apply 経由の Object.toString() 呼び出しでクラスを確認してみる.
document.write( Object.prototype.toString.apply( navigator.constructor ) ); // prints "[object DOMPrototype]" document.write( Object.prototype.toString.apply( navigator.userAgent.constructor ) ); // prints "[object Function]"
DOMPrototype って何じゃそりゃーー!!
ぼくの JavaScript は今まだそういうレベルにいる.