理系学生日記

おまえはいつまで学生気分なのか

navigator.constructor の不思議

これ不思議じゃないですか?

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 は今まだそういうレベルにいる.