Firefoxのjsengine/ gjs(spidermonkey)とwebkitのjscoreはどちらも、非オブジェクトで組み込みのjs関数と通常のjs関数を呼び出すときに動作が異なるようです。
gjs> toString.call(null)
"[object Null]"
gjs> function cccc() {return toString.call(this);}
gjs> cccc.call(null)
"[object GjsGlobal]"
したがって、通常のjs関数が非オブジェクトで呼び出された場合、それthis
は自動的に現在の関数に置き換えられますがthis
、これは組み込み関数では発生しません。
これは(いくつかの仕様による)標準の動作ですか、それとも単に実装に依存する動作ですか?最初の行は、値のタイプをチェックするために常に安全ですか?
THX